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

16

У меня есть экземпляр 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 на локальные серверы может занимать много времени и со временем может привести к значительным затратам на передачу.

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

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

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

Обновить

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

пятерка
источник
aws.amazon.com/blogs/aws/archive-s3-to-glacier/... + есть хорошие короткое видео YouTube в нижней части, объясняющих s3 ледников
equivalent8

Ответы:

10

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

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

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

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

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

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

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

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

да

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

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

Sirex
источник
Спасибо Sirex, одно разъяснение: мы намеревались хранить только одно хранилище резервных копий за один раз (текущий месяц) и архивировать резервную копию последнего месяца на Glacier, а затем удалять копии Glacier в рамках какой-то общей политики хранения (каждый месяц в течение 3 месяцев, затем ежеквартально за год). Как вы думаете, это возможно, или есть какие-то другие ограничения AWS, препятствующие этой стратегии?
Fiver
хм, думаю, это разумно. Хотя я не пробовал это в гневе (или ледник в этом отношении, мы используем Сидней, и он не был доступен, когда мы изучали его)
Sirex
3

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

http://s3tools.org/s3cmd

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

nandoP
источник
Вау, это выглядит круто!
Джейк Гулд
@nandoP +1 Я думал о том, чтобы использовать s3cmd и катить свой собственный
Fiver
1

Похоже, вам может понадобиться 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 прекрасно работает.

JakeGould
источник
1
Это звучит полезно. Переносится ли он напрямую между корзинами без загрузки на клиент?
Fiver
Возможно, да. В основном я использую его для монтирования на локальном сервере и резервного копирования на наши локальные машины. Но так как у него есть возможность записи, я бы не стал использовать его в качестве промежуточного звена для перетасовки данных между сегментами. В основном на промежуточной машине монтируйте одно ведро в одной точке крепления. Затем установите другое ведро как другую точку крепления. А затем просто сделайте rsync. Но, как я уже сказал, время / дата модификации могут быть странными с Amazon S3, поскольку это не совсем файловая система. Но эксперимент.
JakeGould