解決策 1:
プロセスを変更しないと、logrotate だけでは、ここで探していることは実行されません。ここでの重要な問題は、logrotate はワイルドカードを使用できますが、ワイルドカードを使用してもファイルを 1 つとして扱わず、代わりにすべてのファイルを個別にローテーションしようとすることです。これは絶対に望んでいないことです。
ただし、最新のバックアップが日付スタンプなしで作成されている限り、説明した方法で機能させることができます.バックアップ プロセスが /root/backup.tar.gz
を作成する場合 たとえば、次の logrotate 構成を使用できます:
/root/backup.tar.gz {
rotate 5
nocompress
dateext
dateformat _%Y-%m-%d
extension .tar.gz
missingok
}
オプションの概要はこちら:
rotate 5
-- 削除する前に 5 回のローテーションを維持してくださいnocompress
-- 回転後にファイルを圧縮しませんdateext
-- 数値をインクリメントする代わりに、ローテーションの拡張として日付を使用しますdateformat _%Y-%m-%d
-- 使用する日付拡張形式を設定しますextension .tar.gz
--.tar.gz
にします ローテーション延長の後に来るmissingok
-- ローテーションしたいファイルが存在しない場合は、気にせずに先に進みます (デフォルトではエラーがスローされます)。
これがお役に立てば幸いです!
解決策 2:
これを行うために logrotate を使用する必要はありません。次のようなコマンドを使用してください:
ls -1 /root/backup_* | sort -r | tail -n +6 | xargs rm > /dev/null 2>&1
このコマンドは、最新の 5 つのファイルを残し、残り (存在する場合) を削除します。 cron ジョブで使用できます。
解決策 3:
Logrotate はファイルをローテーションするため、答えは「はい」です。おそらく、十分な権限がない場合は、ファイルを /backup などに配置します。ローテーションされたログのグループとユーザーを確認してください:-)。
「圧縮」が構成されていない場合、logrotate には圧縮のオプションがあります。また、あなたの場合、「5回転」オプション。
/etc/logrotate.d (またはシステムに保存されている場所) を見てください