Есть ли команда Ubuntu / Linux для копирования и проверки?


23

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

Большая часть моего поиска в Google для копирования и (проверки | действительного | проверки | хеш | подтверждения) вызывает rsync. Однако, насколько я могу судить, rsync использует только хэши, чтобы увидеть, нужно ли обновлять файл. После этого он не выполняет сравнение хешей.

Для этого, в частности, файлы являются двоичными и обычно 8-10 МБ. Будем весьма благодарны за любые рекомендации для коммунальных услуг или руководства для DIY решений.


Как насчет унисон ? Он используется для двусторонней синхронизации, но он обязательно проверяет контрольную сумму файла.
конус

Ответы:


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 scrub», который просматривает и перечитывает все данные и проверяет контрольные суммы.

За последние несколько лет ZFS-FUSE показала мне хорошие результаты.

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


Почему отрицательный голос? Поскольку никаких комментариев не было, я предполагаю, что это «-1, не согласен». :-)
Шон Рейфшнайдер

... но потом: с какой частью не согласны? Хотя, может быть, немного не по теме, для меня это звучит убедительно. Поэтому я надеюсь, что понижение было связано с тем, что «не ответили на вопрос», а не оставили нас в неведении относительно некоторого реального недостатка в вышесказанном ...
Арджан,

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

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

Btrfs? который имеет контрольные суммы и является родным ...
Дмитрий Кудрявцев


1

Я нашел эту утилиту (Linux и Windows), которая делает то, что вы хотите (хэшированная копия + хешированная проверка с журналом): http://sourceforge.net/projects/quickhash/

Единственным недостатком является то, что он существует только как графический интерфейс (нет доступа к командной строке)

Начиная с версии 1.5.0, выбранная исходная папка может быть хэширована, а затем скопирована и восстановлена ​​в целевую папку, где содержимое снова хэшировано для проверки. Начиная с 1.5.5, можно использовать выбранные маски файлов (* .doc; * .xls и т. Д.).


0

если вы копируете файл локально (как подразумевается в вашей ссылке, cpа не в scpetc), то просто cmpисходные и целевые файлы ... но реально, если cpне выдается какая-либо ошибка (в командной строке или в возвращаемое значение выполнения), нет никаких оснований полагать, что это не работает.

если вы действительно хотите законно избыточное резервное копирование, рассмотрите удаленное решение, такое как dropbox .


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

Вам действительно нужно написать скрипт с циклом, чтобы использовать этот ответ, так как он не учитывает несколько файлов и папок.
Гринго Суаве
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.