Хеш-значение в каталоге

Я хочу проверить целостность папки. В папке так много файлов и папок. Как рассчитать хеш-значение каталога в целом на Ubuntu. md5sum вычисляет только на уровне файла.

2 ответа

Для списка md5sums:

find /path/to/dir/ -type f -exec md5sum {} \;

И для общей контрольной суммы md5:

find /path/to/dir/ -type f -exec md5sum {} \; | md5sum

Пример вывода:

b2d5d3a5e102aae48eb6ff36c602ac75  -

Обратите внимание, что в папке с огромным размером это может занять очень много времени.

Установите md5deep с

sudo apt-get install md5deep

Команда

md5deep -r {direcotory}

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

Я создал dir-fingerprint, который можно использовать для решения этой проблемы. Он создает отпечаток пальца / хэш для всех файлов в дереве каталогов и сохраняет его в файл, а также сообщает, изменился ли отпечаток пальца.

Может быть установлен с:

$ brew install nejckorasa/tap/dir-fingerprint

и используется как:

$ dir-fingerprint <path_to_directory>

с выходом:

Old     [8a7b73f9671004edd50500bc7d3f1837d841a5c086011207259eb2d183823adf]
New     [8a7b73f9671004edd50500bc7d3f1837d841a5c086011207259eb2d183823adf]
@       <path_to_directory>/.fingerprint
Diff    false

а также .fingerprint файл создан

Я опубликовал для этого пакет Python 3. Быстрое использование:

$ pip install git+https://github.com/sorgloomer/pyfstools.git@main
...
$ python -m pyfstools hash .
dir 0348bd69ad78babf85960500f5482cfc6f52d7215c5b094c20bed33a17628033    

Работает в Linux, Windows, работает с хранилищем S3 или GCS. Смотрите больше на pyfstools.

Другие вопросы по тегам