it-swarm-ru.tech

Как сделать резервную копию AWS S3 Bucket без контроля версий исходного хранилища

Есть ли способ восстановиться после случайного удаления Amazon S3 Bucket?

У нас есть критическая информация в наших корзинах, и мне нужно снизить риск случайного или злонамеренного удаления самой корзины.

Я знаю, что могу синхронизировать всю корзину локально, но это не слишком удобно, если размер моей корзины составляет 100 ГБ.

Есть идеи по резервному копированию?

44
Nikhil Gupte

Другой подход заключается в том, чтобы включить поддержку версий S3 в вашем ведре. Затем вы можете восстановить удаленные файлы и т.д. см. Документацию по S3, чтобы узнать, как это включить

Использование сторонних инструментов, таких как BucketExplorer , делает работу с версиями довольно простой (против непосредственного вызова API).

Вы также можете включить удаление многофакторной аутентификации для своих корзин S3, что немного усложнит случайное удаление;)

Подробнее об удалении многофакторной аутентификации
Подробнее об удалении объектов

23
snarkyboojum

Вы можете использовать s3cmd http://s3tools.org/s3cmd

Таким образом, для резервного копирования ведро называется mybucket

s3cmd mb s3://mybucket_backup
s3cmd --recursive cp s3://mybucket s3://mybucket_backup
13
Ian Purton

Это не дешевое решение, но если ваши корзины действительно важны, вот как вы это делаете: загрузите экземпляр Amazon EC2 и периодически синхронизируйте содержимое там.

Amazon EC2 является их провайдером виртуализации. Вы можете раскрутить экземпляры Linux, Windows и т.д. И запускать все, что захотите. Вы платите за час, и вы получаете довольно большое место для хранения локально для этого сервера. Например, я использую экземпляр "большого" размера, который поставляется с 850 ГБ локального дискового пространства.

Самое интересное, что он находится в той же сети, что и S3, и вы получаете неограниченные переводы между S3 и EC2. Я использую программное обеспечение $ 20 Jungle Disk в экземпляре Windows EC2, которое позволяет мне получать доступ к моим корзинам S3, как если бы они были папками на локальном диске. Затем я могу сделать запланированные командные файлы, чтобы скопировать материал из S3 и на мое локальное дисковое пространство EC2. Вы можете автоматизировать его, чтобы хранить почасовые резервные копии, если вы хотите, или если вы хотите играть в азартные игры, настроить JungleDisk (или его эквиваленты в Linux) для синхронизации один раз в час или около того. Если кто-то удаляет файл, у вас есть хотя бы несколько минут, чтобы вернуть его из EC2. Я бы порекомендовал регулярные резервные копии по сценарию - легко сохранять резервные копии в течение нескольких дней, если вы сжимаете их на том объемом 850 ГБ.

Это действительно полезно для доставки журналов SQL Server, но я также вижу, как это будет способствовать достижению вашей цели.

7
Brent Ozar

Одним из возможных решений может быть просто создать "резервное хранилище" и скопировать туда конфиденциальную информацию. Теоретически ваши данные в S3 безопаснее, чем на жестком диске.

Кроме того, я не уверен, является ли случайное удаление реальной проблемой, потому что вам нужно случайно удалить все ваши ключи корзины, прежде чем вы сможете удалить корзину.

7
JAG

Чтобы немного изменить ответ Брента (отлично); вам не нужно поддерживать работу экземпляра. Создайте EC2 AMI, который извлекает ваши данные, синхронизирует их с томом EBS, снимает этот том и выключает себя.

Вы также можете поддерживать том в рабочем состоянии, но для резервного копирования его снимка должно быть достаточно. Если ваш пользовательский AMI делает все это (включая отключение после того, как это сделано) без взаимодействия, тогда вашему скрипту 'backup' просто нужно 'ec2run -n 1 -t m1.small AMI-' и запустить и забыть.

6
Andrew Lusk

Другое возможное решение - скопировать ваше ведро в зону Европы в S3. Это может сохраниться после вашего случайного удаления достаточно долго для восстановления.

6
shawnswaner