我有一个脚本每天备份我的系统。最后我每天得到3个zip文件,然后存储到S3。我想做的是始终保留一周或10天的这些备份。在第10天之后,从S3中删除最旧的3个zip文件。关于如何解决这个问题的任何想法。我没有看到我可以查询修改日期以找到最旧的日期。
我正在使用S3 PHP SDK。作为参考,这是我创建对象的方法。
<?php
require_once 'AWSSDKforPHP/sdk.class.php';
define('BACKUPDIR','/backups/');
$backup1="backup1_".time().".zip";
$backup2="backup2_".time().".zip";
$backup3="backup3_".time().".zip";
$s3 = new AmazonS3();
$s3->create_object('mybucket', 'backups/'.$backup1, array(
'fileUpload' => BACKUPDIR.$backup1,
'acl' => $s3::ACL_PRIVATE
));
$s3->create_object('mybucket', 'backups/'.$backup2, array(
'fileUpload' => BACKUPDIR.$backup2,
'acl' => $s3::ACL_PRIVATE
));
$s3->create_object('mybucket', 'backups/'.$backup3, array(
'fileUpload' => BACKUPDIR.$backup3,
'acl' => $s3::ACL_PRIVATE
));
?>
答案 0 :(得分:1)
使用list_object
需要更多的工作来解析,所以我使用了对象到期。除了让S3处理它之外,这里没什么可做的。我所要做的就是添加到期日期:
$s3->create_object('mybucket', $backup1, array(
'fileUpload' => BACKUPDIR.$backup1,
'acl' => $s3::ACL_PRIVATE,
'headers' => array(
'Expires' => gmdate(CFUtilities::DATE_FORMAT_RFC2616, strtotime('+10 days'))
)
));
现在S3将在10天后自动清除它。处理备份文件时非常适合我。
答案 1 :(得分:0)
使用GET Bucket(列表对象)API调用,如下所示: http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTBucketGET.html
这将返回存储桶中所有项目的列表以及每个项目的一些元数据,包括上次修改项目的日期。然后,您可以使用PHP来确定要删除哪些文件,并使用DELETE Object API调用将其删除:)