私たちは、非常によくある問題に直面しています。毎日バックアップを実行すると、ファイル名に日付が含まれる圧縮されたアーカイブ ファイルが生成されますが、そのすべてを永久に保存しておくつもりはありません。
あまり突飛ではないと思う要件をいくつか挙げます。
- 最後のX日間のバックアップを除くすべてのバックアップを削除します
- 日曜日のバックアップを維持する
- 毎月の最後のバックアップを保存する
- 最新のバックアップのサイズが 0 の場合、または前回のバックアップより 50% 以上大きい/小さい場合に警告する
Google で検索してみましたが、見つかったスクリプトは 1,000 件だけで、その多くには明らかな問題やバグがあります。この問題に対して、十分にテストされ、コミュニティがある「適切な」解決策はないのでしょうか。メンテナンスもバグ修正もされず、いつかバックアップがすべて消えてしまうような SO または SU からスクリプトをコピーして貼り付けるしかないのでしょうか。
答え1
GFS(祖父-父-息子) 保持方法は、おそらくここでの良い答えでしょう。これに、@ivanivan が言及しているようなタイミングの良い cron を組み合わせます。
基本的に、毎日、毎週、毎月バックアップを取ります (どのバックアップを取るかは cron によって制御されます)。
次に保持ポリシーを決定します
- 毎日のバックアップは通常、最低1週間(場合によっては2~3週間)保存されます。
- 週次バックアップは通常5週間(ただし8週間まで)保存されます。
- 月次バックアップは通常 6 か月または 12 か月保存されます (年次/半年ごとのバックアップによって異なります)
- 年次/半年ごとのバックアップも作成できますが、会計やログの保存が必要な場合にしか役に立ちません。
その後、Cronはポリシーウィンドウ外にある古いアーカイブもクリアします。
ivanivan が示唆しているように:
あなたの問題は、比較的単純なシェル スクリプトと cron ジョブのセットで解決できそうです。他の人の状況で機能するスクリプトを Google で検索するのではなく、シェル スクリプトの実行方法を学ぶ方法を Google で検索することをお勧めします。
bash スクリプトを調べてみるといいかもしれません。学ぶ価値のある素晴らしいものです :)