複数のサーバーから何千ものファイルを削除してみてください。
rm
動作しません。定期的に削除を実行する
一般的なスクリプトを作成しましたcron
。
...
/bin/perl -e 'unlink ( <`find ${DIRECTORY} -name "*.${FILETYPE}" -type f -mtime +${DELETE_OLDER_THAN}`> ) or die "Nothing deleted\n" ' >> ${REMOVAL_LOGFILE} 2>&1
...
私は何を削除したいかについて非常に具体的に言いたいと思います。この場合、許可されています:/
より良いと思うので、Perlを使用していますか?-exec rm {}
find
ベストアンサー1
find
そのタスクをサポートすることで、-delete
複数の削除プロセスを作成することなく、できるだけ早い速度を得ることができます。
find "$DIRECTORY" -name "*.$FILETYPE" -type f -mtime +"$DELETE_OLDER_THAN" \
-delete -print >> "$REMOVAL_LOGFILE" 2>&1
-exec rm {} \;
各削除操作ごとに新しいプロセスが作成されるため、速度が遅くなる可能性があります。多数のファイルのプロセスを作成するので、持っている場合はfind
高速-exec rm {} +
です。rm
しかし、すべてのシングルスレッドソリューションの中で最も速いのは-delete
。
もっと複雑な場合は、find .. -delete
ディレクトリツリーの各ディレクトリからプロセスを分岐し(少なくとも一部は)並列に実行することができます。しかし、私はあなたがどのように多くのディレクトリを扱っているのか分からないので、これが純利益であるかどうかはわかりません。