web-dev-qa-db-ja.com

Logrotate:ログ以外のファイルをローテーションしますか?

さまざまなファイルやディレクトリを圧縮し、.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にあります-それでも使用できますか?

ありがとう

18
jen

Logrotateはファイルをローテーションするので、答えは「はい」です。おそらく、十分な権限がない場合は、/ backupなどに配置します。ローテーションされたログのグループとユーザーを確認してください:-)。

Logrotateには圧縮のオプションがあり、「compress」が構成されていない場合はそうですが、うまくいきません。また、あなたの場合、「回転5」オプション。

/etc/logrotate.d(またはシステムに保存されている場所)を確認します

3
3molo

プロセスを変更しないと、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-ローテーションしたいファイルがそこにない場合は、心配せずに続行してください(デフォルトではエラーがスローされます)

お役に立てれば!

26
mark

そのためにlogrotateを使用する必要はありません。次のようなコマンドを使用するだけです。

ls -1 /root/backup_* | sort -r | tail -n +6 | xargs rm > /dev/null 2>&1

このコマンドは、最新の5つのファイルを残し、残りのファイルがあればそれを削除します。 cronジョブで使用できます。

22
Khaled

私も同じ状況でした。 Logrotateはかなりクールに聞こえますが、データとファイル名が一致しないため、100%では機能しませんでした。

そこで、混乱を避けるために、最新の5つのバックアップを保持するために、現在のバックアップを作成した後に実行する次の行を組み込むことにしました。

私のログは次のとおりです:

  • tbl-bcx-20180308_010501.tar.bz2
  • tbl-bcx-20180307_010501.tar.bz2
  • tbl-bcx-20180306_010501.tar.bz2

バックアップスクリプトの新しい行(上記のコメントに基づく)

  • / BCX/dumpsql/-type fを見つけます|ソート-r |尾-n +6 | xargs rm

よろしく、

0
200313