1

システムのバックアップを毎日実行するスクリプトがあります。結局、私は毎日3つのzipファイルを取得し、それらはS3に保存されます。私がやりたいのは、これらのバックアップを常に1週間または10日分保持することです。10日後、S3から最も古い3つのzipファイルを削除します。これにどのように取り組むことができるかについてのアイデア。最も古いものを見つけるために変更された日付を照会する方法がわかりません。

S3PHPSDKを使用しています。参考までに、オブジェクトを作成するために私が行うことは次のとおりです。

<?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

http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTBucketGET.htmlに記載されているように、GETバケット(オブジェクトのリスト)API呼び出しを使用します。

これにより、バケット内のすべてのアイテムのリストと、アイテムが最後に変更された日付を含む、すべてのアイテムのメタデータが返されます。次に、PHPを使用して、これらのファイルのどれを削除するかを判断し、DELETEObjectAPI呼び出しを使用してそれらを削除できます:)

于 2012-04-04T18:28:35.083 に答える