0

Amazon S3 バケット内のいくつかのファイルの削除コマンドを送信する s3cmd のスクリプトが必要です。このメソッドが組み込まれていることは知っていますが、役に立ちません。理由を見てみましょう。

現時点では、データベースを毎真夜中にバックアップし、ウェブサイトのファイルを毎週金曜と火曜 (まだ真夜中) にバックアップするスクリプトがあります。

私が探しているスクリプトは、バケットにのみ保持するためにファイルを削除する必要があります。データベースとファイルの両方の月に 1 回のバックアップ (たとえば、毎月の 1 日)。そして、過去 7 日間のすべてのバックアップ (db は毎日、ファイルは火曜日と金曜日、つまり「デフォルト」の動作) を残します。

たとえば、2012 年 6 月 17 日の場合、状況は次のようになります。

1st January 2012: db and files
1st february 2012: db and files
1st march 2912: db and files
1st april 2012: db and files
1st may 2012: db and files
10th june 2012: db
11th june 2012: db
12th june 2012: db and files
13th june 2012: db
14th june 2012: db
15th june 2012: db and files
16th june 2012: db

その後、2012 年 7 月 2 日に、バケットには以下が含まれている必要があります。

1st of jan, feb, march, apr, may, june: both db and files
last 7 days: "default" backups untouched (files backup only on tuesday and friday and db every midnight).

スクリプトは、私が現在手動で行っていることを自動化します (私はすでに過去 1 か月に 1 つのバックアップしか持っていないため、7 日前から最後の月の 1 日のバックアップに戻るバックアップを削除する必要があります)。

複雑な質問で申し訳ありませんが、十分に明確であることを願っています。:D

4

1 に答える 1

2

スクリプトで実行できるように s3cmd を構成するには、次のコマンドを実行します。

s3cmd --configure

バックアップ スクリプトを実行する必要があるユーザーからこのコマンドを実行するか、生成されたファイルをそのユーザーのホーム ディレクトリにコピーします。

s3cmd でファイルを削除するには、del コマンドを使用するため、スクリプトで次のように s3cmd を呼び出す必要があります。

s3cmd del s3://bucketname/file

もちろん、ワイルドカードも使用できます。

s3cmd del s3://bucketname/file*

バックアップ ファイルに日付を付けて名前を付けることができます。

db.backup.20130411.tgz

以前のバックアップを削除するには、日付を使用します。

ところで、s3qlプロジェクトには、やりたいことを既に実行している可能性のあるexpire_backupsスクリプトがあります。

于 2013-04-11T17:49:00.040 に答える