我有一个脚本,每天备份我的系统。最后,我每天得到3个压缩文件,它们被存储到S3。我想要做的是始终保留一周或10天的这些备份。第10天后,从S3中删除最旧的3个压缩文件。我该怎么解决这个问题。我看不到一种方法可以查询修改后的日期来找到最旧的日期。
我使用的是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
));
?>
发布于 2012-04-04 18:28:35
使用GET Bucket (list objects) API调用,如下所示:http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTBucketGET.html
这将返回存储桶中所有项目的列表,以及每个项目的一些元数据,包括项目最后修改的日期。然后,您可以使用PHP确定要删除这些文件中的哪些文件,并使用删除对象API调用来删除它们:)
发布于 2012-04-09 03:03:53
使用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天后自动清理此文件。在处理备份文件时非常适合我。
https://stackoverflow.com/questions/10016780
复制相似问题