File::Find を使用してネットワーク ファイル システムのインデックスを作成する Perl スクリプト (Windows) を作成しています。うまく機能しますが、ファイル システムのクロールには非常に時間がかかります。ディレクトリをトラバースする前に何らかの方法でディレクトリのチェックサムを取得するといいと思っていましたが、チェックサムが前回の実行で取得されたチェックサムと一致する場合は、ディレクトリをトラバースしません。このファイル システム上のファイルは頻繁には変更されないため、これにより多くの処理が不要になります。
私の AIX ボックスでは、次のコマンドを使用します。
csum -h MD5 /directory
次のようなものを返します。
5cfe4faf4ad739219b6140054005d506 /directory
このコマンドにはほとんど時間がかかりません。
time csum -h MD5 /directory
5cfe4faf4ad739219b6140054005d506 /directory
real 0m0.00s
user 0m0.00s
sys 0m0.00s
これを行うモジュールを CPAN で検索しましたが、すべてのモジュールが、ディレクトリ自体ではなく、ディレクトリ内のすべてのファイルの MD5sum を提供するようです。
Perl でディレクトリの MD5sum を取得する方法はありますか、それとも Windows で Perl から Win32 コマンドを呼び出すことができるのでしょうか?
前もって感謝します!