1

Для данного дерева, скажем, /var /ftpd, как мне создать хеш-файл в каждой папке этого дерева с содержимым этой папки в данном дереве? sha1sum и sha512sum не имеют опций рекурсии.

2 ответа2

1

FWIW решение:

user@host bin]$ cat mkshaindir 
#!/bin/dash
cd $1
sha512sum * >.sha512sum

[user@host bin]$ find /var/ftpd -type d -print0 | xargs -0 -i  mkshaindir  {}

Обратите внимание, что mkshaindir, для моих целей, является отдельным компонентом, потому что мне может понадобиться создать хэш файлов в новой папке или в файле, который был недавно изменен.

Остальное оставлено в качестве упражнения для читателя.

Примечание: sha512sum будет жаловаться в STDERR о не файловом вводе (например, каталогах, файлах блоков и т.д.).

0

Скрипт должен избегать включения самого хеш-файла в расчет, так как сохранение хеш-файла делает хеш-файл недействительным.
Более того, я предлагаю использовать find -exec для экономии ресурсов:

find /var/ftpd -type d -print0 ! -name .sha512sum -exec mkshaindir {} \;

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