Рекурсивные файлы MD5 по сравнению с сохраненным файлом MD5.

762
user419541

Что является лучшим способом для MD53200 файлов в 167 каталогах, используя md5sumсравнение всех хешей с файлом .md5, который уже создан в каждом каталоге, в котором хранятся файлы, подлежащие проверке. Мне также нужно создать журнал, файлы которого не проходят проверку контрольной суммы, чтобы я мог попытаться решить проблему.

Edit :: Если это возможно, сделать это таким образом, чтобы использовать преимущества 8 процессорных ядер (2x четырехъядерных процессоров), было бы полезным, так как я буду просматривать 1,1 ТБ файлов.

По большей части структура каталогов:

Root -> Subdir1 -> File1 File2 File3 hashes.md5 Subdir2 -> File1 File2 File3 hashes.md5 

Хотя некоторые подкаталоги могут иметь дополнительные подкаталоги для трансверсинга, вот так:

Root -> Subdir1 -> File1 File2 File3 hashes.md5 Subdir2 -> Sub-Subdir1 -> File1 File2 File3 hashes.md5 File1 File2 File3 hashes.md5 

Каков наилучший способ перебрать все каталоги, начиная с поиска в корневом каталоге файлов * .md5, а затем проверяя содержимое папки по сравнению с хешами, хранящимися в файле.

Также, если это имеет значение, хеши хранятся в этом формате в файлах * .md5:

5a243a798037cbc7b458326a1e8ff263 *File1 1c3a6609e413bb32512e263f821b2dc4 *File2 49615cf8bf8f23680305e964f6d53f85 *File3 6eb73fa3065fbc220ac9569a98b84c79 *File4 d4f103bf06902e4dbeb67b6975ae08b8 *File5 26b5053e374d1d7262c528eca6426a3a *File6 f6ff252801fbeac6274e00b36a2b9725 *File7 22812abfa9a47131ee8e548747c0903b *File8 b19cd459aaaf07a0c69cda7931827338 *File9 

Имена файлов также могут содержать пробелы, такие как «* File - некоторые другие details.ext»

2

2 ответа на вопрос

3
tastytea

Вы можете использовать find, например:

find . -name hashes.md5 -execdir md5sum --quiet --check hashes.md5 \; > logfile 

Это будет искать файлы с именем "hashes.md5", затем перейдите в каталог найденного файла и выполните md5sum. --Quiet говорит md5sum не печатать ничего, если файл в порядке, только если это не так

Изменить: я не знаю, если найти будет использовать 8 процессоров, вероятно, нет. Вы можете запустить несколько экземпляров find, каждый из которых работает с различным набором подпапок.

Можно ли добавить карту времени для имени файла хеша? Название довольно стандартное, за исключением нескольких каталогов, но все файлы имеют расширение `.md5`. user419541 8 лет назад 0
да, с -name '* .md5' tastytea 8 лет назад 0
Если люди будут искать это в будущем: если вы переходите с windows на linux, вам нужно будет преобразовать окончания строк ваших файлов md5 в формат unix, прежде чем будет работать `md5sum`. В противном случае вы получаете ошибки «файл или каталог не найден». Вы можете сделать это через `find. -name "* .md5" -type f -exec perl -pi -e 's / \ r \ n / \ n /;' {} \; `Просто будьте осторожны, чтобы не использовать его в git-репозиториях, так как вы можете их испортить, предположительно. user419541 8 лет назад 0
0
orange_juice6000

Вы можете использовать программу hashdeep ( https://github.com/jessek/hashdeep ), которая поддерживает все необходимые функции и многое другое:

  • дополнительные хеши (sha1, sha256, тигр, джакузи)

  • более 1 хеша на файл

  • три режима сопоставления (режим аудита (все хэши должны совпадать, нет новых или отсутствующих файлов), положительное совпадение, отрицательное совпадение)

  • многопоточность

Похожие вопросы