Проверка целостности файлов

У меня есть большое количество файлов, которые никогда не должны меняться, включая фотографии в формате RAW и видеофайлы. Меня беспокоит бесшумная битая гниль .

У меня есть резервные копии для восстановления потерянных/поврежденных файлов, но сравнивать текущие файлы с резервными копиями нецелесообразно (например, видеофайлы находятся на цифровых лентах). Кроме того, мое программное обеспечение для резервного копирования не предоставляет для этого функциональности.

Существует ли программное обеспечение, которое сканирует список папок, сохраняет надежные контрольные суммы и может проверять этот выбор на наличие добавленных/удаленных/измененных (поврежденных) файлов?

Там около 3 ТБ и 21 миллион файлов (большая часть из которых, очевидно, действительно маленькие файлы), поэтому потребление памяти важно. Он должен работать в Linux и, желательно, в OS X.

Примечание : в Linux я уже использую ZFS с надежными контрольными суммами и scrubдля обнаружения битфлипов. Однако невозможно или нецелесообразно использовать ни это, ни btrfs на OS X / оптических дисках / USB-дисках, которые должны быть переносимыми (т.е. FAT). Я очень предпочитаю решение, не зависящее от файловой системы.

Если нет программного обеспечения, которое делает это автоматически, поскольку вы работаете в OSX и Linux, вы можете довольно легко настроить сценарий bash и задание cron, md5sumчтобы проверить все ваши файлы, создать отчет и т. д.
Я предлагаю вам следить за файловой системой следующего поколения btrfs : plus.google.com/+AaronSeigo/posts/ZAmXwESunL2 .
По поводу выравнивания, отличного от вопроса , как указано : вас может заинтересовать тестирование git-annex . Его вариант использования «архивариус» охватывает как обнаружение повреждений, так и восстановление из других копий. Да, вы можете попросить его полуавтоматически копировать данные между областями хранения, чтобы обеспечить наличие достаточного количества копий. Настройка по умолчанию немного «инвазивна», так как все файлы заменены символическими ссылками на выделенные каталоги только для чтения, чтобы предотвратить непреднамеренную запись (можно отключить). В первую очередь инструмент для Linux, похоже, он доступен в виде комплекта приложений и доморощенного.

Ответы (3)

Я начал использовать AIDE :

AIDE (Advanced Intrusion Detection Environment) — это средство проверки целостности файлов и каталогов.

Он отслеживает измененные, добавленные и измененные файлы и атрибуты файлов. Поддерживает различные алгоритмы контрольной суммы, включая sha256/sha512.

В Ubuntu aideпакет доступен из базового репозитория ( apt-get install aide). В OS X компиляция не удалась с загадочными ошибками, но установка с macports прошла успешно:

sudo port install aide

Пример файла конфигурации доступен по адресу /opt/local/etc/aide.conf. Бегать просто:

aide --init   # Initializes the database - calculates checksums
aide --check  # Checks files against the database
aide --update # Checks files against the database, and updates the database

Все данные хранятся в текстовом файле (который, очевидно, уязвим для повреждения, но сохранить копию несложно), поэтому переключение инструмента на что-то другое должно быть простым.


Положительные вещи:

  • Быстро
  • Поддерживает несколько надежных алгоритмов контрольной суммы. Использование md5 крайне не рекомендуется, так как оно в основном сломано .
  • Легко запустить на cron
  • Судя по непродолжительному тестированию, проблем пока нет. Правильно обнаружены все изменения (содержимого и настроенных атрибутов файлов), а также добавлены и удалены файлы.
  • Поддерживает сложные исключения файлов: например, нет смысла проверять контрольную сумму временных файлов или любого файла, который должен измениться.
  • Вычисляет несколько контрольных сумм (настраивается). Это обеспечивает относительно хорошие гарантии на будущее — даже если один из алгоритмов хеширования будет скомпрометирован, база данных целостности по-прежнему будет полезна, даже против преднамеренных модификаций (в отличие от битовой гнили).
  • Контрольные суммы хранятся в виде открытого текста, а заголовки включают определения полей. Это полезно, если файл конфигурации утерян или анализируется другой программой.
  • Легко хранить файл конфигурации и базу данных контрольных сумм на каждом диске/CD/папке (структура). При этом все параметры конфигурации автоматически сохраняются, и можно легко снова запустить проверку целостности.

Отрицательные моменты:

  • Для настройки требуется редактирование файла конфигурации в текстовом редакторе, а не наличие приятного пользовательского интерфейса. Точно так же проверка вывода осуществляется прямо на терминал.
  • Последняя версия выпущена в 2010 году, но, с другой стороны, она полностью укомплектована, поэтому нет необходимости в постоянных обновлениях.
  • Целостность базы данных контрольной суммы не проверяется автоматически. К счастью, сделать это отдельно легко ( sha1sum checksums.db > checksums.db.sha1sum)
Хорошо работает в Windows?
aide --init(или что-то еще, что я пытался сделать с aide) не работает в Ubuntu - разработчики пакетов сломали его. Вы должны использовать aideinitвместо этого.
У MD5 есть проблемы с безопасностью, но какое это имеет значение для целей OP? Он не стремится безопасно хэшировать конфиденциальные данные. На самом деле MD5 очень часто используется в качестве контрольной суммы файла - пример . Кроме того, +1 за хороший ответ.
Еще один момент - конфигурация текстового файла и вывод CLI для многих людей были бы скорее положительными, чем отрицательными.

Я использую cfv для этого в течение многих лет.

  • Он поддерживает рекурсивные операции (вы можете создать один файл контрольной суммы для каждого каталога или один файл контрольной суммы для полного поддерева).
  • Он может игнорировать регистр и исправлять параметры разделителя пути для кросс-платформенного использования, что весьма полезно, если вы хотите проверить/создать контрольные суммы в разных файловых системах и/или операционных системах.
  • Это консольное приложение, но у него есть хороший индикатор выполнения (в отличие от простого md5sum).
  • Он может обнаруживать добавленные файлы ( -uопция).

Я не знаю, работает ли он на Mac OS X или нет, но он есть в MacPorts .

Хм. sha1sum * > files.sha1sum; cfvработает отлично. По словам человека, -r -m -uэто правильный набор параметров для проверки файлов без хэшей. Кажется, это работает нормально, НО, если файл с контрольной суммой изменен, он все равно выводит OK для этого. Если файл с контрольной суммой удален, он правильно печатает «1 не найден, 1 непроверен». Я собирался открыть тикет об ошибках, но не удосужился зарегистрироваться на sourceforge.
@Olli: я не думаю, что тебе нужен -mфлаг. Согласно руководству, -m не сравнивайте контрольные суммы . Попробуйте cfv -T -uu -f test1.sha1(если у вас есть один sha1файл для полного дерева каталогов).
почему-то проверяет все дважды (и да, я знаю, что комментарии — это не форум поддержки).

Нет такой школы, как олдскул. По общему признанию, у меня здесь есть некоторая предвзятость из-за моего опыта судебной экспертизы, но вы можете запустить суммы md5 и сравнить их.

Хотя в этой ветке SO есть несколько интересных методов, мне больше нравится hashdeep . Использование памяти низкое, несмотря на то, что он пережевывает кучу циклов процессора, но благодаря волшебству режима аудита он автоматически делает все, что вы от него просите через командную строку — беря текстовый файл и сравнивая его с тем, что он перечисляет. .

Хотя на сайте есть бинарники для Windows, довольно много дистрибутивов и менеджеров пакетов для Mac имеют порты — вы можете найти полный список здесь .

hashdeep - включая оценки времени - звучало красиво, но мне не очень нравится интерфейс: а) на терминале Mac индикатор выполнения / оценки серьезно сломан, б) для папок вы должны дать --recursive. В противном случае --auditон просто рекурсивно проходит и печатает Known file not usedдля каждого файла, c) если файл скопирован, в соответствии с hashdeep он перемещен (и старый сообщается как «Нет совпадения»), а не «добавлен», d) аудит и обновление требуют двух проходит.
«Хотя в этой ветке SO есть несколько интересных методов […]»: должна была быть ссылка?
Я думаю, что он имел в виду эту ветку SR .
Я только что попробовал hashdeep и ожидал, что он сообщит о файлах, которые я добавил или удалил с момента создания хэш-таблицы. Похоже, у него вообще нет возможности сообщить о них. Странный.