私は最近、NFSディレクトリを削除して再作成し、以前に肥大化した後にそのサイズを縮小する必要がありました。その過程で、rsyncとハードリンクを使用してこれを行う非常に効率的な方法を見つけました。この方法では、同じコンテンツでディレクトリを再作成するという目標を達成しながら、実際のファイルのコピーを回避できます。
メンテナンス期間中にこの操作を行うにはダウンタイムが必要だったため、再構築されたディレクトリをできるだけ早く利用可能にすることが重要でした。シンプルさがより重要な場合は、ソースディレクトリで最初のmoveコマンドを「rm -rf」に変更し、他の「rm -rf」コマンドをスキップします。
これらのコマンドをより大きなプロセスから抽出し、ディレクトリ名を抽象化したため、その翻訳で間違いを犯した場合はおaびします。
mkdir /tmp/holding_dir/
rsync -ai --delete --link-dest=/path/to/source_dir/ /path/to/source_dir/ /tmp/holding_dir/
mv /path/to/source_dir/ /tmp/deleteme/
mv /tmp/holding_dir/ /path/to/source_dir/
その後、ディレクトリを削除します。サイズに応じて、これを行うにはより高度な手法を使用する必要があります。たとえば、-deleteフラグを指定してrsyncを使用して空のディレクトリをこのディレクトリに同期すると、より効率的な場合があります。
rm -rf /tmp/deleteme/