• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Logrotateで不等間隔のローテーションは出来ますか)

Logrotateで不等間隔のローテーションは可能?

このQ&Aのポイント
  • Logrotateを使って不等間隔のローテーションをすることは可能です。
  • 一般的にはLogrotateは等間隔でのローテーションを行うために使用されますが、書き方を工夫することで不等間隔のローテーションも実現できます。
  • 具体的にはファイル名に日付情報を使用し、その日付を基準にして指定の日数を差し引くことで不等間隔のローテーションを実現します。

質問者が選んだベストアンサー

  • ベストアンサー
  • mtaka2
  • ベストアンサー率73% (867/1179)
回答No.1

設定とか以前の根本的な問題として、質問者さんの望むローテーションは 「ファイルコピーは伴わない(リネームのみで済む)」 ように実現することは不可能であることを理解されていますか? 通常のローテーションでは、時間経過にあわせて、 ・一昨日のファイルを、一昨昨日のファイル名にリネーム ・昨日のファイルを、一昨日のファイル名にリネーム ・今日のファイルを、昨日のファイル名にリネーム といった処理を行います。一つのファイルに保存されているデータ内容はまったく変わっていません。 ところで、質問者さんの要望では、 > file - 当日のファイル > file.1 - 昨日のファイル > file.2 - 一昨日のファイル このように、直近では1つのファイルに1日単位でログが記録されています。 これらのファイルが時間経過によって古くなったときに、 ここから、コピーを伴わないリネームだけでは、 > file.2.1 - 一週間前のファイル > file.2.1.1 - 一ヶ月前のファイル のような、2日以上にわたったデータを1つにまとめて記録したファイルを作り出すことはできません。

mirin_2005
質問者

補足

説明が不足しており、手を煩わせてしまって申し訳有りません。 本来の目的である、逐次ファイル内容がアペンドされてゆくログなら 確かにそのとおりかと思います。 目的は毎日一日一回、ある時間に内容が変わるファイルのバックアップです。 上記の例であれば、3~6日目の間に記録された情報は消えてしまっても構いません。

その他の回答 (2)

  • mtaka2
  • ベストアンサー率73% (867/1179)
回答No.3

「一週間」とか「一ヶ月」が厳密じゃなくてもいいのなら、 下記の3ルールで、logrotateで保存できるかと思います。 ・ルール1 日次更新で、file をfile.1,file.2 にリネーム、file.3 は残さない file: 当日 file.1: 1日前 file.2: 2日前 ・ルール2 週次更新で、file.2 を、file.2.1、file.2.2 にリネーム、file.2.3 は残さない (2日前のファイルをリネームし、その後6日間はリネーム無しの日が続く) file.2.1: 3日前~9日前 file.2.2: 10日前~16日前 ・ルール3 月次更新で、file.2.2 を、file.2.2.1、file.2.2.2 にリネーム、file.2.2.3 は残さない (「10~16日前」のファイルをリネームし、その後1ヶ月間はリネーム無しの日が続く) file.2.2.1: 11日前~1ヶ月+16日前 file.2.2.2: 1ヶ月+11日前~2ヶ月+16日前 保存しているファイル名が複雑になってますし、 更新期間が半端なことになっているので、可能なら 回答2で挙げられているようなスクリプトを組む方が便利かと思います。

  • root139
  • ベストアンサー率60% (488/809)
回答No.2

> 目的は毎日一日一回、ある時間に内容が変わるファイルのバックアップです。 > 上記の例であれば、3~6日目の間に記録された情報は消えてしまっても構いません。 という条件であったとしても、昨日の時点で6日前の情報が消されていれば、その消された情報は今日になれば7日前の情報という事になる訳ですので、決められた日数前の情報だけがいつの時点でも保存されているという状態には出来ません。 毎月N日、毎週X曜日のデータは長めに保存するということで大丈夫なら、ShellスクリプトやPerl、Antなどを使って出来るかと思います。logrotate ではちょっと厳しいかも知れません。 例えば、下記の様にしてみたらどうでしょう。 ・ファイル名はyyyymmddを付けてリネーム  file - 当日のファイル  file.20100816 - 昨日のファイル ・毎月1日分のバックアップは2ヶ月間保存 ・月曜日分は2週間後に削除 ・上記以外は3日後に削除

関連するQ&A