Я помітив, що оригінальний пост є досить старим, проте я думаю, що ця інформація все ще може бути цінною для тих, хто шукає рішення, щоб перевірити, чи правильно скопійовані файли. 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
, використовуйте, >
а не>>
Зауважте, що ця команда може зайняти досить багато часу, залежно від швидкості io та розміру даних. Ви можете експериментувати з nice та / або ionice, щоб підвищити продуктивність md5deep, але це не виходить за рамки цієї відповіді.
Коли створення контрольних сум закінчено, тепер у вас є файл із записами, схожими на:
69c0a826b29c8f40b7ca5e56e53d7f83 ./oldconfig-11-09-2013/etc2/apm/event.d/20hdparm 651f3c7f79a14332f9fa7bb368039210 ./oldconfig-11-09-2013/etc2/apm/event.d/anacron 50d89784c1e201f68ff978b95ff4bdfb ./oldconfig-11-09-2013 /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 md5deep
md5deep -rel /path/to/your/directory/ > directory_hash.md5
md5deep -X directory_hash.md5 -r /path/to/your/second/direcotory
Thx a lot.