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

Резервное копирование данных, хранящихся на Amazon S3

У меня есть экземпляр EC2, на котором запущен веб-сервер, на котором хранятся файлы, загруженные пользователями на S3. Файлы записываются один раз и никогда не изменяются, но время от времени их извлекают пользователи. Скорее всего, мы будем накапливать около 200-500 ГБ данных в год. Мы хотели бы обеспечить безопасность этих данных, особенно от случайного удаления, и хотели бы иметь возможность восстанавливать файлы, которые были удалены независимо от причины.

Я читал о функции управления версиями для ведер S3, но не могу найти, возможно ли восстановление для файлов без истории изменений. См. Документацию AWS по управлению версиями:

http://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectVersioning.html

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

Затем мы подумали, что можем просто сделать резервную копию файлов S3 в Glacier, используя управление жизненным циклом объекта:

http://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html

Но, похоже, у нас это не сработает, поскольку файловый объект не копируется в Glacier, а перемещается в Glacier (точнее кажется, что это атрибут объекта, который изменен, но в любом случае ...).

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

Наконец, мы подумали, что будем создавать новую корзину каждый месяц, которая будет служить ежемесячной полной резервной копией, и копировать исходные данные корзины в новую в первый день. Затем, используя что-то вроде duplicity (http://duplicity.nongnu.org/) мы будем синхронизировать резервную корзину каждую ночь. В конце месяца мы помещали содержимое корзины резервных копий в хранилище Glacier и создавали новую корзину, используя новую, текущую копию исходной корзины ... и повторяем этот процесс. Кажется, что это сработает и минимизирует затраты на хранение / передачу, но я не уверен, позволяет ли дублирование передавать данные из ведра в ведро напрямую, не передавая данные сначала контролирующему клиенту.

Итак, я думаю, здесь есть пара вопросов. Во-первых, позволяет ли управление версиями S3 восстанавливать файлы, которые никогда не изменялись? Есть ли способ «скопировать» файлы с S3 на Glacier, которые я пропустил? Может ли дублирование или любой другой инструмент передавать файлы между корзинами S3 напрямую, чтобы избежать затрат на передачу? Наконец, ошибаюсь ли я в своем подходе к резервному копированию данных S3?

Заранее благодарим за любую информацию, которую вы могли предоставить!

Обновить

Amazon недавно объявила, что управление версиями теперь работает с правилами жизненного цикла.

Я читал о функции управления версиями для ведер S3, но не могу найти,> возможно ли восстановление для файлов без истории изменений. См. Документацию AWS здесь по> управлению версиями:

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

Затем мы подумали, что можем просто сделать резервную копию файлов S3 в Glacier, используя жизненный цикл объекта> управление:

Но, похоже, это не сработает для нас, поскольку объект-файл не копируется в Glacier, а> перемещается в Glacier (точнее, кажется, что это атрибут объекта, который был изменен, но> в любом случае ...).

Glacier действительно предназначен для длительного хранения, к которому очень редко обращаются. Также может быть очень дорого получить большую часть ваших данных за один раз, поскольку это не предназначено для восстановления большого количества данных на определенный момент времени (в процентном отношении).

Наконец, мы подумали, что будем создавать новый сегмент каждый месяц, который будет использоваться в качестве ежемесячной полной> резервной копии, и копировать данные исходного сегмента в новый в День 1. Затем, используя что-то> вроде duplicity (http://duplicity.nongnu.org/) мы будем синхронизировать архивную корзину каждую ночь.

Не делайте этого, у вас может быть только 100 ведер на учетную запись, поэтому через 3 года вы израсходуете треть своего лимита на резервные копии.

Итак, я думаю, здесь есть пара вопросов. Во-первых, позволяет ли управление версиями S3 восстанавливать> файлы, которые никогда не были изменены?

да

Есть ли способ «скопировать» файлы с S3 на Glacier, которые я пропустил?

Не то, что я знаю о

Мне не нравится монтировать s3, потому что он медленный, может зависать и работать как старая школа nfs. лучше просто вверх / вниз по мере необходимости.

http://s3tools.org/s3cmd

его легко написать скрипт ... не забывайте свой файл ~ / .s3cfg

Похоже, вам может понадобиться S3FS, которая в основном монтирует ваши корзины S3, как если бы они были локальными файловыми системами:

http://code.google.com/p/s3fs/wiki/FuseOverAmazon

Я предпочитаю использовать эту разветвленную версию, поскольку в ней сохраняется та же структура папок, что и в веб-панели управления Amazon S3:

https://github.com/tongwang/s3fs-c

Затем у меня есть несколько сценариев оболочки, которые в основном используют rsync для синхронизации данных с моими локальными настройками.

В целом, я считаю, что S3FS лучше всего подходит для чтения контента, размещенного в корзинах Amazon S3. Письмо не такое последовательное. Но для целей резервного копирования ведер S3 отлично подходит вилка Tony Wang для S3FS.