Чи існує команда копіювання та підтвердження в Ubuntu / Linux?


23

Я створю резервні копії всіх своїх цифрових фотографій в декількох місцях. Я використовував команду cp, але - враховуючи особисту цінність - почав цікавитись, чи є більш надійний спосіб. Мені не дивно для Linux, Bash, Perl і т. Д., Тому я міг би щось написати, щоб скопіювати та порівняти хеди md5, але мені було цікаво, чи щось вже існує (винахід, колеса і що-ні).

Більшість моїх googling для копіювання і (перевірити | дійсні | перевірити | хеш | підтвердити) виявляється rsync. Однак, наскільки я можу сказати, rsync використовує хеші лише для того, щоб побачити, чи потрібно оновити файл. Після цього він не виконує хеш-порівняння.

Фактично для цього використання файли є двійковими і зазвичай 8-10 МБ. Будемо дуже вдячні за будь-які рекомендації щодо комунальних послуг або рекомендацій щодо самостійних рішень.


Як щодо унісону ? Він використовується для двосторонньої синхронізації, але він обов'язково перевіряє контрольну суму файлу.
конус

Відповіді:


19

З man rsync, під -cопцією:

-c, --checksum: пропуск на основі контрольної суми, а не мод-часу та розміру

Зауважте, що rsync завжди перевіряє, що кожен переданий файл був реконструйований правильно на приймальній стороні, перевіряючи контрольну суму цілого файлу, яка створюється під час передачі файлу, але що автоматична перевірка після передачі не має нічого спільного з цією опцією до передачі "Чи потрібно оновити цей файл?" перевірити.


7
Деякі люди зрозуміли, що посібник з rsync вводить в оману щодо перевірки за замовчуванням після копіювання: unix.stackexchange.com/a/66702/148560 Здається, такої перевірки немає. Щоб перевірити всі копії, вам потрібно зробити ще один rsync з опцією --checksum, кажуть вони.
Ротарети

5

Кілька років тому у мене були такі ж вимоги, як і ви. Я вибрав рішення: використовувати ZFS через драйвер ZFS-FUSE на моєму сервері зберігання даних. Я думав, що мої особисті фотографії, відскановані документи та інші подібні файли - це речі, до яких я можу отримати доступ лише зрідка, тому це може пройти дуже довго, скажімо, рік і більше, перш ніж я помічу, що файл був пошкоджений через помилка накопичувача тощо.

На той час усі резервні копії, які я маю, можуть бути цією гнилою версією файлів.

ZFS має перевагу перед RAID-5 тим, що він може виявляти та виправляти помилки в даних, що зберігаються на окремих дисках, навіть якщо накопичувачі не повідомляють про помилку читання під час читання даних. За допомогою контрольних сум він виявить, що один з дисків повернув пошкоджену інформацію, і використає дані надмірності для відновлення цього диска.

Через те, як розроблено контрольну суму в ZFS, я відчув, що можу покластися на неї для зберігання нечасто використаних даних протягом тривалих періодів часу. Щотижня я запускаю скраб для zpool, який проходить і перечитує всі дані та перевіряє контрольні суми.

За останні кілька років ZFS-FUSE виступив для мене досить добре.

У далекому минулому для клієнта я впровадив систему баз даних, яка зберігала інформацію контрольної суми про всі файли, що зберігаються в певному каталозі. Потім у мене був ще один сценарій, який періодично запускався і перевіряв би файл на контрольній сумі, що зберігається в базі даних. З цим ми могли швидко виявити пошкоджений файл та відновити з резервних копій. Ми в основному впроваджували ті самі види перевірок, які ZFS здійснює всередині країни.


Чому голосування вниз? Оскільки коментарів не залишилося, я припускаю, що це "-1, не згоден". :-)
Шон Рейфшнайдер

... але тоді: про яку частину не погоджується? Хоча це може бути трохи поза темою для питання, це здається мені солідним. Тож я сподіваюсь, що голосування було за "не відповідь на запитання", а не залишати нас поза увагою щодо якоїсь реальної вади у вищезазначеному ...
Ар'ян

Сьогодні вранці я зрозумів, що припускаю, що крижаний просив через стурбованість біт-гниллю, що і було моїм клопотом. Але, можливо, це якось інакше. Хоча я не можу уявити, який би був випадок використання, який міняв би вміст файлу законно, не змінюючи час файлу.
Шон Рейфшнайдер

Я думаю, що занепокоєння ОП полягало в корупції даних на транзиті. Ви копіюєте файл, і його копія відрізняється від оригіналу.
Джон Бентлі

btrfs? що має контрольні суми і є рідним ...
Дмитро Кудрявцев


1

Я знайшов цю утиліту (Linux та Windows), яка робить саме те, що ви хочете (хешована копія + хешированная перевірка з журналом): http://sourceforge.net/projects/quickhash/

Єдиним недоліком є ​​те, що він існує лише як графічний інтерфейс (немає доступу до командного рядка)

Починаючи з версії 1.5.0, вибрану вихідну папку можна хешувати, потім скопіювати та реконструювати в цільову папку, де вміст знову хеширується для перевірки. З 1.5.5 також можна використовувати обрані файлові маски (* .doc; * .xls тощо).


0

якщо ви копіюєте файл локально (як мається на увазі ваша посилання на cpзамість scpтощо), то просто cmpвихідні та цільові файли ... але реально, якщо cpне видається якась помилка (або в командному рядку, або в повернене значення виконання), немає жодних причин вважати, що воно не працює.

якщо ви дійсно хочете законно виправити резервну копію, розгляньте віддалене рішення, наприклад, dropbox .


+1. Незрозуміло, чому ця відповідь була оскаржена, оскільки вона (що мені здається) є ідеально правильним рішенням проблеми, хоча для цього потрібні дві команди, а не одна.
Джон Бентлі

Вам потрібно буде написати сценарій з циклом, щоб використовувати цю відповідь, оскільки він не враховує декілька файлів і папок.
Gringo Suave
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.