2012-04-04 118 views
1

我有一個腳本,每天都會對我的系統進行備份。最後,我每天得到3個zip文件,並將它們存儲到S3。我想要做的是始終保留一週或10天的這些備份。第10天后,從S3中刪除最舊的3個zip文件。關於如何解決這個問題的任何想法。我沒有看到我可以查詢修改的日期以查找最古老的方式。從S3刪除最舊的對象

我正在使用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 
)); 
?> 

回答

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天后自動清理它。處理備份文件時適合我。