Как рекурсивно создать хеш-файл (sha512sum) внутри каждой папки дерева?
Для данного дерева, скажем, /var/ftpd, как мне создать хеш-файл в каждой папке этого дерева с содержимым этой папки в данном дереве? sha1sum и sha512sum не имеют опций рекурсии.
2 ответа
Решение
FWIW решение:
user @ host bin] $ cat mkshaindir #! / Bin/ тир CD $ 1 sha512sum *>.sha512sum [user @ host bin] $ find / var / ftpd -type d -print0 | xargs -0 -i mkshaindir {}
Обратите внимание, что mkshaindir, для моих целей, является отдельным компонентом, потому что мне может понадобиться создать хэш файлов в новой папке или в файле, который был недавно изменен.
Остальное оставлено в качестве упражнения для читателя.
Примечание: sha512sum будет жаловаться в STDERR о не файловом вводе (например, каталогах, файлах блоков и т. Д.).
Скрипт должен избегать включения самого хеш-файла в вычисления, так как сохранение хеш-файла делает хеш-файл недействительным.
Более того, я предлагаю использовать find -exec
чтобы сэкономить ресурсы:
find /var/ftpd -type d -print0 ! -name .sha512sum -exec mkshaindir {} \;