从AWS S3取消删除文件夹

时间:2017-07-20 06:39:19

标签: amazon-web-services amazon-s3 undelete

我有一个启用了版本控制的S3存储桶。可以取消删除文件,但如何取消删除文件夹?

我知道,S3没有文件夹...但是如何取消删除常用前缀?是否有可能递归取消删除文件?

3 个答案:

答案 0 :(得分:1)

您无法取消删除常用前缀。您需要一次取消删除一个对象。当一个对象出现时,任何相关的文件夹也会重新出现。

取消删除可以通过两种方式完成:

  • 删除将取消删除的删除标记,或
  • 将对象的先前版本复制到自身,这将使最新版本比删除标记更新,因此它将重新出现。 (我希望你明白这一点!)

答案 1 :(得分:1)

我找到了令人满意的解决方案here,详细介绍了here

总而言之,没有开箱即用的工具,但是一个简单的bash脚本包装了AWS工具" s3api"实现递归取消删除。

解决方案对我有用。我发现的唯一缺点是亚马逊似乎在大约30.000个文件后限制了恢复操作。

答案 2 :(得分:1)

我创建了这个简单的bash脚本来恢复我删除的S3文件夹中的所有文件:

std::io::Error

#!/bin/bash recoverfiles=$(aws s3api list-object-versions --bucket MyBucketName --prefix TheDeletedFolder/ --query "DeleteMarkers[?IsLatest && starts_with(LastModified,'yyyy-mm-dd')].{Key:Key,VersionId:VersionId}") for row in $(echo "${recoverfiles}" | jq -c '.[]'); do key=$(echo "${row}" | jq -r '.Key' ) versionId=$(echo "${row}" | jq -r '.VersionId' ) echo aws s3api delete-object --bucket MyBucketName --key $key --version-id $versionId done =删除文件夹的日期