Можно ли восстановить файл, который я удалил из своей корзины S3?
4 ответа
Если у вас включена поддержка версий, вы можете! В версионной корзине действие по удалению файла на самом деле не удаляет его, а добавляет версию с "Удалить маркер". Вы можете удалить маркер удаления с помощью 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;
Согласно документации Amazon S3:
После удаления нет способа восстановить или восстановить объект.
Просто обновляю этот вопрос, поскольку я искал ответ:
Теперь вы можете добавить VERSIONING к корзинам S3. Это заставит S3 сохранять версии объекта даже после удаления. Полная документация: http://docs.amazonwebservices.com/AmazonS3/latest/dev/Versioning.html
Теперь вы можете получить список версий объектов с помощью консоли AWS:http://docs.aws.amazon.com/AmazonS3/latest/UG/managing-objects-versioned-bucket.html.
Если у вас есть необходимые разрешения, вы можете удалить маркер удаления (последнюю версию удаленного объекта), и в результате этот объект снова станет доступен.