
一意の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
:標準入力(の出力)からファイル名を読み込みます。