Amazon S3恢复已删除的文件


Answers:



43

如果启用了版本控制,则可以!在版本桶中,对文件的删除操作并不会真正删除它,但是会添加带有“删除标记”的版本。您可以使用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;

我感谢这个答案!完美地工作。
tacotuesday,2016年

老兄!您取消删除所有文件的脚本才救了我的命。谢谢。
herostwist

对于上面的脚本,--output=text如果希望它可以工作,则需要添加一个。他假设您是通过.txt文件而不是.JSON文件输出AWS命令。
布拉德·艾里森

我试过了脚本,但它不还原对象,而是将其永久删除!可能是因为我不是水桶所有者吗?
nicola

1
为什么这不是公认的答案?@vonhogen,请重新考虑您的选择:)
Janaka Bandara


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.