Как мне создать контрольную сумму для папки, полной файлов, которые я копирую на другой жесткий диск, чтобы проверить ее?

$ tr ' ' '\t' <pheno_Mt.txt
IID     pheno
1000017 -9
1000025 -9
1000038 1
1000042 -9
1000056 -9

Это выглядит так, как будто команда trсделала что-то только с первой строкой файла, но поскольку вывод табуляции перемещает курсор на следующую позицию, кратную восьми, на экране, и поскольку это ровно один пробел после 7-символьного числа, эффект заключается в том, что табуляция в других строках выглядит как только один пробел.

Между прочим, это можно сделать и другим способом, не зависящим от количества пробелов в исходном файле,

$ awk -v OFS='\t' '{ print $1, $2 }' pheno_Mt.txt
IID     pheno
1000017 -9
1000025 -9
1000038 1
1000042 -9
1000056 -9

Здесь используется awkдля вывода двух столбцов, разделенных табуляцией -, считанных из ввода, разделенного пробелами -.

Или, для любого количества столбцов,

$ awk -v OFS='\t' '{ $1=$1; print }' pheno_Mt.txt
IID     pheno
1000017 -9
1000025 -9
1000038 1
1000042 -9
1000056 -9

Это заставляет awkзаново -формировать всю запись, изменяя первое поле. Обычный printбудет печатать запись с табуляциями в качестве разделителей.

-121 ---203146 ​​-

Мне удалось это сделать:

  • Я загрузил gparted live,
  • подключил мой корень к/mnt
  • скреплены /devи /procна /mnt/devи/mnt/proc
  • пробовал grub-install, не получилось, выдал предупреждение, что сработает только в том случае, что не рекомендуется .
  • Я дал ему принудительную опцию. Это сработало.

Я предполагаю, что это должно быть стабильно, по крайней мере, до тех пор, пока я не попытаюсь отредактировать разделы в следующий раз. Если так, то все хорошо, я пережил множество обновлений и редактирую таблицу разделов основного жесткого диска только при обновлении ОС (, так как виртуальный -ящик и докер не выполняют двойную загрузку ).

0
18.11.2021, 18:25
1 ответ

Вот с чего я бы начал, используя "scratch" в качестве источника и "zork" в качестве новой копии (, которая может находиться на другом дистрибутиве ). Обратите внимание, что я использую флаг -aдля cp, чтобы временные метки файлов сохранялись во время копирования.

% (cd scratch ; tar cf -.) | shasum -a 256
a17cacd171d6cbc2f6da028c8167b0602a1146a337f602de71529999fe471e0f  -

% /bin/cp -a scratch zork

% (cd zork ; tar cf -.) | shasum -a 256
a17cacd171d6cbc2f6da028c8167b0602a1146a337f602de71529999fe471e0f  -

Если вы хотите напрямую сравнить две суммы, вы можете использовать

if [[ $((cd scratch ; tar cf -.) | shasum -a 256) == $((cd zork ; tar cf -.) | shasum -a 256) ]]
then
  echo match
else
  echo no match
fi
0
19.11.2021, 18:21

Теги

Похожие вопросы