cronで任意の件数をバックアップ

例えばデータベースのバックアップを7日間ごとにやるなら曜日を利用して、

/usr/bin/pg_dump database > database-`/bin/date +\%A`.dump

と書けばよかったけれど、任意の日付間隔の場合どうしようかなあと考えた結果がこれ。

/usr/bin/pg_dump database > database-`expr \`date +%-s\` / 60 / 60 / 24 % [バックアップを取りたい件数]`.dump

1970/01/01からの秒数を日数に直した値の剰余をとればdatabase-0.dumpから連番でローテーションして生成されます。

例えば最新10日分なら

/usr/bin/pg_dump database > database-`expr \`date +%-s\` / 60 / 60 / 24 % 10`.dump

こんな感じにするとdatabase-0.dumpからdatabase-9.dumpが生成されます。どれが最新かはファイル名からは判別しづらいけど、まぁそこは生成された日付をみてください、ということで。