Вот моя ситуация. У меня есть два архивных тома холодного хранения, которые (должны) содержать идентичные наборы данных. Эти тома содержат редко используемые резервные копии. Я обеспокоен тем, что, в конечном счете, bitrot попадет к одному или обоим из них и слегка испортит данные, содержащиеся в них. Я знаю, что могу diff -r
два тома и находить файлы, которые изменились или исчезли между ними, но я не получаю никаких полезных указаний о том, на каком томе есть "хорошая" копия. Это USB-диски, и преобразование их в нечто вроде ZFS кажется ... обременительным.
Что мне нужно, так это инструмент, который будет рекурсивно обходить дерево каталогов и писать файл манифеста, содержащий путь и имя файла вместе с хэшем содержимого файла. Я запускал этот инструмент сразу после записи данных на каждый том и сохранял полученный файл манифеста в теплом хранилище, возможно, под каким-то контролем версий.
Из этого файла я хотел бы иметь возможность запускать что-то, что работает точно так же, как diff -r
- оно сообщит мне, были ли файлы добавлены, удалены или их содержимое изменилось. Только вместо того, чтобы сравнивать один том с другим, он сравнил бы один том с файлом заведомо исправного манифеста. Используя этот метод, я смогу определить, совпадают ли данные, которые я читаю с диска, месяцы / годы в будущем, с данными, которые я изначально положил на него.
Я должен был бы думать, что что-то подобное уже существует. Я могу получить что-то приближенное к файлу манифеста, используя:
find /mnt/my-volume -type f -exec md5sum {} + > manifest.txt
но до сих пор я не нашел хорошего способа проанализировать этот файл и рекурсивно проверить каждый хеш. Также, что несколько менее важно, это не скажет мне, появился ли пустой каталог или исчез. (Я не могу понять, почему это имеет значение, но было бы приятно узнать, что это произошло.)
Я на правильном пути с этим, или есть более подходящий инструмент, который может делать такие вещи?