web-dev-qa-db-ja.com

ツリーの各フォルダー内にハッシュファイル(sha512sum)を再帰的に作成するにはどうすればよいですか?

特定のツリー(たとえば/ var/ftpd)について、そのツリーの各フォルダーに、特定のツリー内のそのフォルダーの内容を含むハッシュファイルを作成するにはどうすればよいですか? sha1sumとsha512sumには再帰オプションがありません。

1
Chris

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に文句を言います。

1
Chris

ハッシュファイルを保存するとハッシュが無効になるため、スクリプトはハッシュファイル自体を計算に含めないようにする必要があります。
さらに、リソースを節約するためにfind -execを使用することをお勧めします。

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