1

我有一个每天备份我的系统的脚本。最后,我每天得到 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
));
?>
4

2 回答 2

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 天后自动清理它。处理备份文件时非常适合我。

于 2012-04-09T03:03:52.797 回答
0

使用 GET Bucket(列出对象)API 调用,如此处所述:http: //docs.amazonwebservices.com/AmazonS3/latest/API/RESTBucketGET.html

这将返回存储桶中所有项目的列表以及每个项目的一些元数据,包括项目最后修改的日期。然后,您可以使用 PHP 确定要删除哪些文件,并使用 DELETE Object API 调用来删除它们 :)

于 2012-04-04T18:28:35.083 回答