私は今日SQL Server 2000で作業していました。ディスカッションこのEXECUTE
コマンドを使用するには、-DelBkUps
特定の期間のバックアップを削除する必要があります。
Linuxで古いバックアップを削除するツールはありますか?私の考えでは、ある種のクローンジョブで実行されていることも、Backulaなどのより大きなツールセットの一部でもあります。
私はbashがこれを行うことができると確信していますが、私はもう少し事前に構築され、広く利用可能なものを探しています。
答え1
rsnapshot
rsync
12ヶ月のバックアップなどのバックアップ数(数)を維持し、古いバックアップを自動的に削除するように設定できるファイルバックアップを作成するためのPerlスクリプト。
期間は、時間、日、週、月単位で設定でき、予想どおりに自動的に呼び出されますcron
。
私はそれを使ってデータベースダンプ(mysql)の毎日のスナップショットを作成しますDrupal CMS
。rsnapshot.org
答え2
おそらくこのような単純なシェルスクリプトを探しているので、「事前に構築された」プログラムがまれであることは驚くべきことではありません。
このスクリプトのしくみは、バックアップの構成方法によって異なります。バックアップtar-ballのファイル生成タイムスタンプが信頼できると確信している場合は、単にfindを使用できます。
find /backup-dir -type f -ctime +366 -exec echo rm -f {} +
1年以上前のすべてのファイルを見つけて削除するコマンドを印刷します。 (出力をコピー/貼り付けるか、必要なく上記をやり直すことができますecho
)
ただし、ファイルタイムスタンプは100%信頼できない可能性があります。それで、4桁の年と3桁の「ユリウス暦」の日付(年のn日目)で示されたフォルダにバックアップを入れました。次のコマンドを使用してディレクトリを作成しました。
date +%Y%j
次に、昨年の「ターゲット」タイムスタンプを生成し、その文字列をアルファベット順に小さいすべての値と比較します。
DAY=$(date +%j)
YEAR=$[ $(date +%Y) - 1 ]
find /backup-dir -type d |
awk '/[0-9]{7}/'
awk -F/ -v target=$YEAR$DAY '$3 < target' |
xargs echo rm -rf
まあ、そうではありません。だから細かい。今回は、find
バックアップディレクトリのディレクトリ名を出力します。最初のものはawk
2番目に折りたたむことができます。明確にするために分離した。 2番目のawkはディレクトリ区切り記号に沿って各行を分割し、3番目のディレクトリコンポーネント(最初のディレクトリコンポーネントが空)がターゲット日付より小さい場合にのみその行を出力しますYYYYjjj
。最後に、/
以前と同じ疑似削除コマンドがありますが。xargs
find ... -exec ... +