0

我需要一个用于 s3cmd 的脚本,它为我的 Amazon S3 存储桶中的某些文件发送删除命令。我知道这个方法是内置的,但它没有用。让我们看看为什么。

目前我有一个脚本,可以在每个午夜备份我的数据库,每个星期五和星期二(仍然在午夜)备份我的网站文件。

我正在寻找的脚本应该删除文件以便仅在存储桶上拥有:数据库和文件的每月 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 个备份,因此我必须从 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 回答