file.tar.gzでのみ古いログファイルを回転させる方法は?

file.tar.gzでのみ古いログファイルを回転させる方法は?

一意のfile.tar.gzで30日より古いすべてのログファイルを回転させ、アーカイブに挿入されたファイルを削除する方法は?

今後:

a.log // older than 30days
b.log // older than 30days
c.log // older than 20 days

後ろに:

backup.tgz
c.log

答え1

Linuxロガーを使用していて、次に回転構成を追加できる場合/etc/logrotate.dサイズ、形式などを指定できるディレクトリです。

例:

/var/log/test.log {
    rotate 30
    weekly
    size=30k
    compress 
}

ここに一つあります。カンニング紙スクリプト用。

答え2

次のことができます。

find . -name '*log' -mtime +30 -print0 | tar -czvf backup.tgz --remove-files --null -T -

そして:

  • findオプション:
    • -name '*log' -mtime +30:30日以上経過したログファイルを選択します。
    • -print0:標準出力にフルファイル名を印刷し、その後にヌル文字が続きます。
  • tarオプション:
    • --remove-files:ファイルをアーカイブに追加して削除します。
    • --null:nullで終わる名前を読む(から送られたfind -print0
    • -T -find:標準入力(の出力)からファイル名を読み込みます。

関連情報