Рекурсивные файлы MD5 по сравнению с сохраненным файлом MD5.
Каков наилучший способ MD5
3200 файлов в 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 ответа
Вы можете использовать find, например:
find . -name hashes.md5 -execdir md5sum --quiet --check hashes.md5 \; > logfile
Будет выполнен поиск файлов с именем "hashes.md5", затем перейдите в каталог найденного файла и выполните md5sum. --Quiet говорит md5sum не печатать ничего, если файл в порядке, только если это не так
Изменить: я не знаю, если найти использовать 8 процессоров, вероятно, нет. Вы можете запустить несколько экземпляров find, каждый из которых работает с различным набором подпапок.
Вы можете использовать программу hashdeep ( https://github.com/jessek/hashdeep), которая поддерживает все необходимые функции и многое другое:
дополнительные хеши (sha1, sha256, тигр, джакузи)
более 1 хеша на файл
три режима сопоставления (режим аудита (все хэши должны совпадать, нет новых или отсутствующих файлов), положительное совпадение, отрицательное совпадение)
многопоточность