find -name "*.xml" -mtime +7 -print0 | tar -cvzf yourArchive.tar.gz --remove-files --null --files-from -
gzip で圧縮された tar ファイル 'yourArchive.tar.gz' を作成します。このファイルには、現在のディレクトリ内のすべての *.xml ファイルと、過去 24*7 時間に変更されていないサブディレクトリのすべての深さと、これらのファイルを tar アーカイブに追加した後が含まれます。ファイルが削除されます。
編集:
このスクリプトは運用時間中に実行できますか?それともシステムが停止しますか?
実際にはシステムに依存します。これにより、大量の I/O 負荷が発生します。運用システムが大量の I/O を使用し、素晴らしい I/O サブシステム (ファイバー チャネルなどを使用して接続された巨大な RAID システムなど) を持っていない場合、これはパフォーマンスに顕著な影響を与えます。 . ただし、これがどれほど悪いかは詳細によって異なります。
システムの負荷が問題になる場合は、ファイルを追跡する小さなデータベースを作成できます。おそらく inotify を使用すると、長時間バックグラウンドで実行できるため、あまり気付かれません。
上記のプロセスの優先順位を を使用して設定することもできますがrenice
、問題は CPU ではなく I/O であるため (CPU がうまくいかず、何らかの理由で I/O が非常に優れている場合を除きます)、これは目的の結果につながらない可能性があります。効果。しかし、次善の策は、sleep で装飾されたファイル ツリーをクロールする独自のスクリプトを作成することです。完了するまでに時間がかかりますが、本番システムへの影響は少なくなります。本当に行動するプレッシャーがない限り、これはお勧めしません。