web-dev-qa-db-ja.com

Amazon S3は削除されたファイルを回復します

S3バケットから削除したファイルを復元することはできますか?

21
vonhogen

Amazon S3ドキュメント: によると

いったん削除されると、オブジェクトを復元または復元する方法はありません。

20
Dave Webb

バージョン管理を有効にしている場合は、可能です。バージョニングされたバケットでは、ファイルの削除アクションは実際にはファイルを削除しませんが、「削除マーカー」でバージョンを追加します。 AWS CLIを使用して削除マーカーを削除できます。

aws s3api delete-object --bucket yourbucket-name --key "yourfile" --version-id id_of_the_delete_marker

あなたはバケット内のすべてのファイルを取得することができます

aws --output text s3api list-object-versions --bucket yourbucket-name > files.txt

バケット内のすべてのファイルの削除を取り消す場合は、次のことを試すことができます。

echo '#!/bin/bash' > undeleteScript.sh && aws --output text s3api list-object-versions --bucket yourbucket-name | grep -E "^DELETEMARKERS" | awk '{FS = "[\t]+"; print "aws s3api delete-object --bucket yourbucket-name --key \42"$3"\42 --version-id "$5";"}' >> undeleteScript.sh && . undeleteScript.sh; rm -f undeleteScript.sh;
44
Chris Cinelli

私が答えを探していたので、この質問を更新しました:

S3バケットにVERSIONINGを追加できるようになりました。これにより、S3は削除後もオブジェクトのバージョンを保持します。完全なドキュメント: http://docs.amazonwebservices.com/AmazonS3/latest/dev/Versioning.html

3
dineth

AWSコンソールを使用してオブジェクトのバージョンを一覧表示できるようになりました http://docs.aws.Amazon.com/AmazonS3/latest/UG/managing-objects-versioned-bucket.html

適切な権限がある場合は、削除マーカー(削除されたオブジェクトの最新バージョン)を削除できます。その結果、オブジェクトが再び使用可能になります。

0
Fabian M