Назад | Перейти на главную страницу

Восстановить ведро S3 с версией до определенного момента времени

Допустим, у меня включено управление версиями S3 для моей корзины: http://docs.aws.amazon.com/AmazonS3/latest/dev/Versioning.html

Затем, допустим, кто-то (например, младший сотрудник) испортил корзину S3 (случайно удалил некоторые файлы и т. Д.)

Как я могу затем восстановить всю управляемую версиями корзину до определенного момента времени? Я считаю, что это возможно с учетом API S3, но я бы предпочел не писать такой скрипт сам из опасения что-то упустить (я не эксперт AWS).

Есть ли хорошее решение этой проблемы? Я использую корзину S3 в качестве хранилища изображений для моего приложения Rails, поэтому что-то на основе Ruby, которое я мог бы использовать в качестве задачи с граблями, было бы идеальным.

Ты можешь использовать s3-pit-restore

S3 Восстановление на момент времени - это инструмент, который можно использовать для точного восстановления сегмента или его части до заданного момента времени, например:

s3-pit-restore --bucket my-bucket --dest my-restored-bucket --timestamp "06-17-2016 23:59:50 +2"

Что на самом деле предлагает s3-pit-restore:

  • Восстановить все файлы с меткой времени меньше заданной
  • Восстановление всего ведра или префикса ведра
  • Параллельная загрузка нескольких файлов с большой общей скоростью
  • Настройка количества параллельных рабочих процессов для оптимизации использования полосы пропускания
  • Восстановление из версий ведра s3 или из ледника, если включено

Если я понимаю документация правильно, когда у вас включено управление версиями, удаление файла просто возвращает "последнюю" версию назад на один номер версии. Однако это не дать возможность восстановить целое ведро. Это делает предыдущие версии в S3 не подходящими для ваших нужд (например, восстановление после удаления).

На всякий случай храните резервную копию где-нибудь еще. Переполнение стека есть вопрос / ответ по этому поводу, используя s3cmd. Я уверен, что вы можете найти где-нибудь сценарий на основе Ruby или попросить на этом сайте помощь, если она вам понадобится.

Вот небольшой удобный php-скрипт, который я использовал для восстановления своего ведра из резервного ведра с управлением версиями:

Чтобы вернуться в корзину с включенным управлением версиями

#CONFIGURATION
export bucket_to_backup='example-of-a-bucket-name';
export backup_bucket='example-of-a-backup-bucket-name'; 
export AWS_ACCESS_KEY_ID=ASDFDSAFADSFDASF;
export AWS_SECRET_ACCESS_KEY=adsfdsaf86adsf5adsf568aadf75ads;
#you will need to download and install the s3cmd tool at the following url:
#http://s3tools.org/
s3cmd --access_key=$AWS_ACCESS_KEY_ID --secret_key=$AWS_SECRET_ACCESS_KEY --recursive sync s3://$bucket_to_backup s3://$backup_bucket;

восстановить резервную копию из файлов, версия которых находилась между этими двумя отметками времени

export startSnapShotTimeStamp=1427577934;
export endSnapShotTimeStamp=1427577939;
#do the restore with php script
php awsUtil.php sync example-of-a-backup-bucket-name example-of-a-bucket-name $startSnapShotTimeStamp-$endSnapShotTimeStamp

вы можете скачать скрипт PHP здесь: http://boulderapps.co/post/backing-up-and-restoring-s3-to-a-versioned-bucket