さまざまなファイルやディレクトリを圧縮し、.tgzアーカイブを作成するバックアップスクリプトがあります。ファイルには名前が付けられています。
...
backup_2010-10-28.tar.gz
backup_2010-10-29.tar.gz
backup_2010-10-30.tar.gz
backup_2010-10-31.tar.gz
backup_2010-11-01.tar.gz
これらのファイルを管理して、古いファイルを削除して、最新の5つのバックアップのみを保持したいと考えています。
Logrotateを使用してこれを実行できますか?これらはログファイルではなく、すでに圧縮されています。/var/logではなく、/ rootにあります-それでも使用できますか?
ありがとう
Logrotateはファイルをローテーションするので、答えは「はい」です。おそらく、十分な権限がない場合は、/ backupなどに配置します。ローテーションされたログのグループとユーザーを確認してください:-)。
Logrotateには圧縮のオプションがあり、「compress」が構成されていない場合はそうですが、うまくいきません。また、あなたの場合、「回転5」オプション。
/etc/logrotate.d(またはシステムに保存されている場所)を確認します
プロセスを変更しないと、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
-ローテーションしたいファイルがそこにない場合は、心配せずに続行してください(デフォルトではエラーがスローされます)お役に立てれば!
そのためにlogrotateを使用する必要はありません。次のようなコマンドを使用するだけです。
ls -1 /root/backup_* | sort -r | tail -n +6 | xargs rm > /dev/null 2>&1
このコマンドは、最新の5つのファイルを残し、残りのファイルがあればそれを削除します。 cronジョブで使用できます。
私も同じ状況でした。 Logrotateはかなりクールに聞こえますが、データとファイル名が一致しないため、100%では機能しませんでした。
そこで、混乱を避けるために、最新の5つのバックアップを保持するために、現在のバックアップを作成した後に実行する次の行を組み込むことにしました。
私のログは次のとおりです:
バックアップスクリプトの新しい行(上記のコメントに基づく)
よろしく、