Amazon S3:使用s3cmd自动删除某些文件

时间:2012-08-18 13:40:34

标签: amazon-s3 backup cloud database-backups s3cmd

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

目前我有一个脚本每隔午夜备份我的数据库,我的网站每周五和周二(仍然是午夜)提交文件。

我正在寻找的脚本应该删除文件,以便只有桶:每月1次备份(比如说,每月的第1天)db和文件。 并保留所有备份(每天为数据库,周二和周五为文件,所以“默认”行为)为过去7天。

例如,如果我在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天前删除备份,返回到最后一个月的备份)。

对于这个令人费解的问题感到抱歉,我希望它足够清楚。 :d

1 个答案:

答案 0 :(得分:2)

要配置s3cmd以便能够在脚本中运行:

s3cmd --configure

从必须运行备份脚本的用户运行此命令,或将生成的文件复制到该用户主目录。

要使用s3cmd删除文件,请使用del命令,因此,在脚本中,您应该像这样调用s3cmd:

s3cmd del s3://bucketname/file

当然,您也可以使用通配符:

s3cmd del s3://bucketname/file*

您可以使用日期命名备份文件:

db.backup.20130411.tgz

并使用日期删除以前的备份。

顺便说一句,在s3ql项目中,有一个expire_backups脚本可能已经在做你想做的事。