Хеш-значение в каталоге
Я хочу проверить целостность папки. В папке так много файлов и папок. Как рассчитать хеш-значение каталога в целом на 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.