Как проверить целостность двух версий одного и того же файла?

Как проверить целостность двух версий одного и того же файла?

За последние годы (примерно с 2000 года) я время от времени перемещал и копировал данные между дисками. Данные — это MP3, приложения, видео, резервные копии, электронные письма, понемногу всего, и они перемещались/копировались между несколькими дисками (и дисковыми массивами!) и между несколькими файловыми системами FAT, NTFS, ReiserFS, Ext3, Ext4, jfs…

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

Для начала я проверил целостность rar-файлов на моем файловом сервере Linux с помощью find и команды:

unrar t <rar files>

Это хорошо, но я не могу проверить целостность всех своих архивов таким образом, не говоря уже обо всех других моих файлах (документах, фотографиях, MP3, WAV, ZIP, список, конечно, бесконечен).

Я хотел бы проверить все файлы несколькими способами.

  1. Проверка файловой системы, очевидно, хороша, но она не сможет помочь, если данные были повреждены еще до копирования на диск, на котором они в данный момент находятся, верно? Текущая файловая система — JFS.

  2. Может ли 2-й уровень проверки быть контрольными суммами MD5? У меня есть резервные копии всех моих данных, и я мог бы попытаться сопоставить контрольные суммы, но будут ли поврежденные файлы давать мне другие контрольные суммы? Это все равно не решает проблему, если файл был поврежден до последнего копирования моих данных.

  3. Что еще мне следует проверить, чтобы обрести душевное спокойствие?

  4. При сравнении моих данных с моими резервными копиями есть огромная загвоздка; как и все живое, мои данные «изменялись» с течением времени, а резервные копии — это моментальные снимки во времени, которые никогда не менялись впоследствии. Во-первых, структура каталогов изменилась, файлы, очевидно, были удалены или перемещены в другие места. Очевидно, что будет беспорядок, если использовать команду findдля сопоставления файла между резервным деревом и текущим деревом!

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

решение1

MD5/ SHAконтрольные суммы являются золотым стандартом для проверки целостности файлов в наши дни. Если у вас есть оригиналы, из которых можно создать контрольные суммы, или у вас уже есть контрольные суммы, это будетнаиболее тщательныйспособ проверки содержимого файлов. Однако это может быть утомительно, если у вас столько файлов, сколько вы, по-видимому, предполагаете.

Кроме того, форматы файлов RAR, ZIPи 7Zдолжны содержать контрольную сумму CRC32 всех хранящихся внутри файлов. Это слабее (т. е. более вероятно, что поврежденные данные останутся незамеченными), чем MD5 или SHA, но он все равно может обнаружить наличие повреждения при извлечении файла, что означает, что архив поврежден. Они автоматически проверяются каждый раз, когда вы извлекаете файл из архива. unrar -t <rar files>по сути, просто проверяет контрольные суммы CRC32 для каждого файла в архиве.

Кроме того, архивные инструменты должны давать вам возможность генерировать .sfvфайл при создании архива, который является дополнительным CRC32 архива в целом. Вы можете использовать это для дальнейшей проверки целостности архива.

Если вы копируете файлы из одной файловой системы в другую, вы можете использовать что-то вроде специализированного инструмента для проверки того, что копирование прошло успешно и правильно. Для Windows, который я использую TeraCopy, просто включите опцию «проверить» перед началом копирования, и TeraCopy перечитает скопированные файлы, чтобы проверить, что они действительно были правильно записаны на диск в новом месте.

Связанный контент