
40,000項目のうち、11.8GBの再帰的なmd5sum確認には2分かかります。
ret=$(find "${target}"/ -name ".md5sum" -size +0 | while read aFile; do cd "${aFile%/*}"; md5sum -c ".md5sum"; done | grep -v "OK";)
気づかなかった明らかなスピードアップはありますか?
答え1
まさか。
サイズ+タイムスタンプが一致したときにチェックを完全に放棄することを決定しない限り、チェックサムが実際に一致するかどうかを最適化する方法はほとんどありません。ただし、これを確認するには実際にすべてのファイルを読み取る必要があり、時間がかかります。
md5sum
すべてのファイルを含むグローバル MD5SUMS ファイルを作成して、個々のファイルへの呼び出しの数を減らすことができます。しかし、ボトルネックはディスクI / Oであるため、速度に大きな違いはありません...
ファイルが変更されると、少し最適化できます。
ファイルサイズが変更された場合は、md5sumを確認せずにファイルサイズを記録することもできます。サイズが異なると、自動的にmd5sumが変更されたことを意味するためです。
完全なファイルチェックサムの代わりにブロックベースのチェックサムを実行できるため、以前にすでに変更があった場合は、特定のファイルの違いのチェックを停止できます。したがって、ファイル全体を読み取る必要はなく、最初に変更されたブロックのみを読み取ることができます。