从 AWS S3 取消删除文件夹

Rol*_*ger 2 amazon-s3 amazon-web-services undelete

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

我知道,S3 没有文件夹……但是我怎样才能取消删除通用前缀?是否有可能以递归方式取消删除文件?

小智 5

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

#!/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
Run Code Online (Sandbox Code Playgroud)

yyyy-mm-dd = 文件夹被删除的日期


Rol*_*ger 3

在这里找到了一个令人满意的解决方案,这里有更详细的描述。

综上所述,没有现成的工具可以实现此目的,而是通过一个简单的 bash 脚本封装了 AWS 工具“s3api”来实现递归取消删除。

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