最近、大量のファイル(100万を超える)を削除する必要がありました。
rsync -av --delete `mktemp -d`/ ~/source && rmdir ~/source
それを行うための最も最適化された方法の1つであり、それよりも高速であることを保証できrm -rf
ます。
私はこの問題の専門家ではありませんが、rsyncのパフォーマンスの理由は、ファイルをリストする方法(FIFOではなくLIFOの場合)に何らかの理由があります。問題は、大量のファイルを効率的な方法で移動する必要があることです。少し検索した後、私はこれを見つけました:
rsync -av --ignore-existing --remove-source-files ~/source ~/destination
これにより、に移動したすべてのファイルが削除されますが~/source
、ディレクトリはそのまま残ります。「ラウンドロビン」のようなディレクトリ構造を持っているため、の数はfiles/directories
1に非常に近いため、ディレクトリを完全に削除するには、最初のコマンドを再度実行する必要があります。
rsync -av --ignore-existing --remove-source-files ~/source ~/destination && \
rsync -av --delete `mktemp -d`/ ~/source && rmdir ~/source
ストレートmv
はほぼ瞬時に終了し~/destination
ますが、私のディレクトリには保持する必要があるファイルがあるためmv
、オプションではありません。--prune-empty-dirs
および--force
rsyncオプションを見つけましたが、どちらも期待どおりに動作しないようです:
--force force deletion of directories even if not empty
--prune-empty-dirs prune empty directory chains from the file-list
--remove-source-files sender removes synchronized files (non-dirs)
一度にrsyncで動きを模倣する方法はありますか?