2

Каков наилучший способ для файлов 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 ответа2

3

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

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

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

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

0

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

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

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .