Проверьте правильность скопированных файлов

После того, как я скопировал, скажем, 50+ ГБ (30 000 файлов, включая различные форматы) файлов с внутреннего жесткого диска на внешний диск, есть ли способ узнать, все ли правильно скопировано? Кроме того, если я остановлюсь в промежутке, отменив операцию, а затем произнесу , слить , продолжая операцию, будет ли корректность попадать в цель?

Я мог бы использовать такие приложения, как back-in-time, но я очень разборчив в копировании файлов, и в следующий раз я намерен использовать операцию copy и сказать merge вместо replace. Желательно ли при копировании большого количества файлов?

14
задан 28 April 2011 в 13:33

5 ответов

Я использую hashdeep, чтобы проверять резервные/восстановления и иногда проверять на повреждение файловой системы в RAID.

Скорость зависит, на которых хеш-функциях Вы используете (некоторые - больше ЦП, интенсивного, чем другие), а также скорость чтения Ваших дисков. В моей системе hashdeep может обработать или проверить приблизительно 1 ТБ/час с md5 и скоростью чтения на 300 МБ/с.


Пример при вычислении контрольных сумм и хранении их в файле:

cd my-data
hashdeep -rlc md5 . > ~/checksums.txt

Параметры:

  • r – рекурсивный
  • l – используйте относительные пути
  • c – укажите хеш-функцию
  • . – рекурсивный запуск в текущем каталоге
  • > – перенаправьте вывод в указанный файл

См. страницу справочника.


Пример при проверке контрольных сумм и печати списка различий:

$ cd /mnt/my-backup
$ hashdeep -ravvl -k ~/checksums.txt .
hashdeep: Audit passed
          Files matched: 40914
Files partially matched: 0
            Files moved: 0
        New files found: 0
  Known files not found: 0

Параметры:

  • a – аудит (соответствуют списку известных контрольных сумм),
  • v – подробный (для получения списка несоответствий, нескольких vs означает более подробный),
  • k – файл известных хешей

Отметьте это по состоянию на март 2016 hashdeep кажется, отказываются.

16
ответ дан 28 April 2011 в 13:33

Это выглядит как идеальная задача для rsync . Rsync сравнивает и копирует различия.

Утилита rsync впервые пришла мне в голову, когда я увидела ваш вопрос. Выполнение чего-либо подобного приведенному ниже может быстро показать, какие файлы находятся в каталоге a, но не в b:

$ rsync -rcnv a/* b/

-r will recurse into the directories
-c will compare based on file checksum
-n will run it as a "dry run" and make no changes, but just print out the files 
   that would be updated
-v will print the output to stdout verbosely

Это хороший вариант, поскольку вы также можете сравнить содержимое файлов, чтобы убедиться, что они совпадают. Дельта-алгоритм rsync оптимизирован для этого типа использования. Затем, если вы хотите, чтобы b соответствовало содержимому a, вы можете просто удалить опцию -n, чтобы выполнить фактическую синхронизацию.

Некоторые связанные вопросы:

0
ответ дан 28 April 2011 в 13:33

В «если все было скопировано правильно», я использую модифицированный cp (или mv), который включает контрольную сумму (опционально хранится в xattr, следовательно, он должен быть рассчитан только один раз для источника) http: / /sourceforge.net/projects/crcsum/

0
ответ дан 28 April 2011 в 13:33

Ситуация, о которой вы говорите, слишком сложна. Хотя вы можете написать скрипт для расчета MD5 всех файлов, которые вы хотите скопировать, а затем сравнить их с скопированными:

[ 117] Если вы хотите что-то простое и быстрое (оно не будет работать в очень сложных сценариях), вы можете использовать Meld

sudo apt-get install meld
0
ответ дан 28 April 2011 в 13:33

Если приложения с графическим интерфейсом, предложенные в Средстве сравнения файлов и каталогов? , не делают этого за вас, попробуйте diff -rq /path/to/one /path/to/other спокойно выполнить поиск по обоим каталогам, регистрируя только различия на экране.

0
ответ дан 28 April 2011 в 13:33

Другие вопросы по тегам:

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