Я заметил, что оригинальный пост довольно старый, однако, я думаю, что эта информация все еще может быть полезна для тех, кто ищет решение для проверки правильности копирования файлов. Rsync может быть лучшим методом для копирования данных, и ответы, приведенные в этой теме, хороши, однако для тех, кто не знаком с Linux, я попытаюсь дать более подробное объяснение.
Сценарий: вы просто скопировали данные с диска на другой, с большим количеством подкаталогов и файлов. Вы хотите убедиться, что все данные скопированы правильно.
Сначала убедитесь, что md5deep установлен, введя команду md5deep -v.
Если вы получаете сообщение, в котором говорится что-то вроде «команда не найдена», то установите md5deep by apt-get install md5deep.
Предполагается, что вы хотите иметь дело только с обычными файлами. Если вы хотите работать с другими типами файлов, обратитесь к флажку -o в руководстве по md5deep. ( man md5deep)
Теперь все готово, и мы предполагаем, что вы скопировали файлы из /mnt/orginalв /mnt/backup, заменив их на любые каталоги, которые вы используете.
Сначала перейдите в исходный каталог, это исходный источник для файлов, которые вы скопировали или скопировали:
cd /mnt/orginal
Затем создайте контрольную сумму каждого файла:
md5deep -rel -o f . >> /tmp/checksums.md5
Эта команда объяснила:
-r включает рекурсивный режим
-e отображает индикатор прогресса
-l включает относительные пути к файлам.
-o f работать только на обычных файлах (не блочных устройствах, именованных каналах и т. д.)
. говорит md5deep запускаться в текущем каталоге.
>> /tmp/checksums.md5говорит md5deep перенаправить весь вывод /tmp/checksums.md5.
Обратите внимание, если вы хотите перезаписать содержимое в предыдущих версиях /tmp/checksums.md5, используйте, >а не>>
Обратите внимание, что эта команда может занять довольно много времени, в зависимости от скорости ввода-вывода и размера данных. Вы можете поэкспериментировать с nice и / или ionice, чтобы увеличить производительность md5deep, но это выходит за рамки этого ответа.
Когда создание контрольных сумм завершено, у вас есть файл, в котором есть записи, похожие на:
69c0a826b29c8f40b7ca5e56e53d7f83 ./oldconfig-11-09-2013/etc2/apm/event.d/20hdparm 651f3c7f79a14332f9fa7bb368039210 ./oldconfig-11-09-2013/etc2/apm-09fb0bdbdfd5fd6f5df4bd4fd4fd4fd4fd4fd4ef4 /etc2/apm/scripts.d/alsa e9b9131660a8013983bc5e19d7d669eb ./oldconfig-11-09-2013/etc2/ld.so.cache
Первый столбец - контрольная сумма md5, а второй столбец - относительный путь к файлу, к которому принадлежит контрольная сумма.
Если вы хотите увидеть, сколько файлов существует в файле контрольной суммы, введите команду:
wc /tmp/checksums.md5 -l
Теперь вы хотите проверить правильность скопированных данных:
cd /mnt/backup
md5deep -o f -reX /tmp/checksums.md5 . >> /tmp/compare.result
Единственное отличие от того, когда мы создали контрольные суммы, - это -X, который отображает текущий хэш файла, если запись в файле checkums.md5 не совпадает. Таким образом, к концу теста, если /tmp/compare.resultон пуст, вы можете быть уверены, что все файлы скопированы правильно, поскольку контрольные суммы совпадают.
Обратите внимание, что только файлы, перечисленные в /tmp/checksums.md5файле, будут проверены на правильность контрольной суммы. Если в /mnt/backupкаталоге есть какие-либо дополнительные файлы , md5deep не уведомит вас об этом.
Заметки:
Вам не обязательно использовать перенаправление для хранения выходных файлов. Обратитесь к руководству md5deep для получения дополнительной информации.
Возможно, вам придется запускать команды md5deep от имени пользователя root, в зависимости от прав доступа к файлам, с которыми вы работаете.
sudo apt-get install md5deepmd5deep -rel /path/to/your/directory/ > directory_hash.md5md5deep -X directory_hash.md5 -r /path/to/your/second/direcotoryспасибо большое.