我创建了一个脚本来使用 deletemarker 恢复对象。你必须像下面这样输入它:
sh undelete_deletemarker.sh 存储桶名 path/to/certain/folder
**Script:**
#!/bin/bash
#please provide the bucketname and path to destination folder to restore
# Remove all versions and delete markers for each object
aws s3api list-object-versions --bucket $1 --prefix $2 --output text |
grep "DELETEMARKERS" | while read obj
do
KEY=$( echo $obj| awk '{print $3}')
VERSION_ID=$( echo $obj | awk '{print $5}')
echo $KEY
echo $VERSION_ID
aws s3api delete-object --bucket $1 --key $KEY --version-id
$VERSION_ID
done
Run Code Online (Sandbox Code Playgroud)
快乐编码!;)
小智 5
谢谢你,Kc Bickey,这个脚本非常棒!我可以为其他人添加的唯一一件事是确保第 12 行上的“$VERSION_ID”紧跟在“--version-id”之后。论坛似乎已将“$VERSION_ID”包装到下一行,这会导致脚本出错,直到已更正。
**Script:**
#!/bin/bash
#please provide the bucketname and path to destination folder to restore
# Remove all versions and delete markers for each object
aws s3api list-object-versions --bucket $1 --prefix $2 --output text |
grep "DELETEMARKERS" | while read obj
do
KEY=$( echo $obj| awk '{print $3}')
VERSION_ID=$( echo $obj | awk '{print $5}')
echo $KEY
echo $VERSION_ID
aws s3api delete-object --bucket $1 --key $KEY --version-id $VERSION_ID
done
Run Code Online (Sandbox Code Playgroud)
使用存储桶版本控制启用永久删除对象时,您需要特别提及该对象的版本DELETE Object versionId
如果您这样做了,则无法恢复此特定版本,您可以访问以前的版本
启用版本控制后,简单的 DELETE 无法永久删除对象。相反,Amazon S3 会在存储桶中插入一个删除标记,以便您可以从该特定标记中恢复,但如果该标记被删除(并且您提到它已被永久删除),您将无法恢复
您是否启用了跨区域复制?如果是这样,您可以检索其他区域中的对象:
如果 DELETE 请求指定要删除的特定对象版本 ID,Amazon S3 将删除源存储桶中的该对象版本,但不会在目标存储桶中复制删除操作(换句话说,它不会从源存储桶中删除相同的对象版本)目标存储桶)。此行为可以保护数据免遭恶意删除。
编辑:如果您的存储桶上启用了版本控制,您应该会看到Versions Hide/Show切换按钮,当Show选择该按钮时,您应该会Version ID根据我的存储桶的屏幕截图获得附加列

| 归档时间: |
|
| 查看次数: |
5017 次 |
| 最近记录: |