
最新のバックアップファイルを4つ保持し、古いバックアップファイルを削除する方法は?
backup-Y-M-D.zip
backup-Y-M-D.zip
backup-Y-M-D.zip
backup-Y-M-D.zip
.
.
backup-Y-M-D.zip
拡張子が .zip のファイルが 80 個程度ありますが、作成日に基づいて最新の 8 個のファイルを維持したいと思います。また、logrotateを試しましたが、何もしなかったため、ログの回転に失敗しました。以下はlogrotateの設定ファイルです。
/root/test/*.zip {
daily
missingok
extension .zip
rotate 4
nocompress
}
答え1
まず、設定が正しくないようです。ワイルドカードではなくlogrotate
実際のファイル名(例:)が必要です。/root/test/backup.zip
1。ファイル自体はlogrotate
予想される形式で名前を付ける必要があります。あるいは、むしろ、logrotate
ファイルに期待される命名を知らせる必要があります(そうでなければ似ているfile.1.ext
と仮定します)。日付の書式を設定することは可能かもしれませんが、ツールが設計されている以上のツールを使用しているように感じます。
次のようなものがあなたが望むものかもしれません。
find '/root/test' -maxdepth 1 -type f -name 'backup-*.zip' -print0 \
| sort -rz \
| tail -zn+5 \
| xargs -t0 -n1 true rm
true
これは安全のために制限されます。有効にするには、最後の単語を削除してください。-n1
出力の読みやすさを向上させるためのものなので、それを削除することもできます。
その後、このファイルエージングプロセスをトリガーする何かが必要です。通常、これはバックアップファイルを作成したのと同じプロセスの一部であるため、必要に応じて正確に発生します。これが不可能な場合(たとえば、ファイルが一部のリモートプロセスを介して転送される場合)、スケジュールに従って実行するためのcrontab
エントリを作成することをお勧めします。
1これだけ資格を得るには、logrotate
するワイルドカードは許可されていますが、ここでは有用な方法で処理されません。一致する各ファイルは、回転する必要がある項目セットの最初の項目として扱われます。
それはあなたにうまくいかないかもしれません、またはあなたのファイルが少し汚れているので、名前を変更する必要があるようです。