Какой практичный способ отразить ведро Amazon S3?

9

Я хочу отразить свои ведра Amazon S3. Я хочу сделать это, потому что 1) я не хочу, чтобы все мои данные существовали только у одного поставщика; и 2) в случае ошибки программного обеспечения или нарушения безопасности, я хочу сделать резервную копию данных.

Я могу зеркалировать на локальный диск с помощью функции синхронизации s3cmd, но она не масштабируется для очень больших сегментов и не полезна для быстрого восстановления из резервной копии. Я бы предпочел, чтобы мои данные были отражены для конкурента, такого как Rackspace Cloud Files.

У кого-нибудь есть предложения по простому и надежному способу автоматизировать такое зеркалирование на Linux-боксе?

Бен
источник
Правильно ли я предположить, что ни один из ответов на самом деле не решает «1) я не хочу, чтобы все мои данные существовали только у одного поставщика», потому что все они просто отражают сегменты в одном и том же поставщике?
Крис

Ответы:

6

Вы можете использовать утилиту " s3cmd " с опцией "sync", хотя я наткнулся на ваш вопрос, потому что я пытаюсь выяснить, не испортил ли этот механизм синхронизации мои резервные копии двойственности.

jberryman
источник
это действительно лучшее решение, которое я нашел s3tools.org/s3cmd-sync
Джон Башир
5

У меня возникла та же проблема, поэтому я разработал небольшую программу, специально разработанную для зеркалирования одного сегмента S3 в другой; Я называю это s3s3mirror.

Сначала я попробовал подход «s3cmd sync», но у меня было ведро с сотнями тысяч объектов, и «s3cmd sync» просто сидел там, ничего не делая, но занимая все больше и больше памяти, пока моя система не умерла. Я разработал s3s3mirror, чтобы сразу приступить к работе, использовать 100 параллельных потоков (настраиваемых) и скромно использовать процессор и память. Если я сам так скажу, это чертовски быстро.

Я сделал это доступным на github под лицензией Apache. Если вы решите повернуть его, пожалуйста, дайте мне знать, что вы думаете, и если есть что-то, что можно улучшить.

Вот ссылка: https://github.com/cobbzilla/s3s3mirror

Спасибо!

  • Джонатан.
cobbzilla
источник
Спасибо за вашу работу, я сделал из этого исполняемый контейнер докера и уже использую его в производстве: github.com/pmoust/s3s3mirror-docker
Panagiotis Moustafellos
4

У Amazon теперь есть поддерживаемый инструмент для этого, aws cli .

Он может отражать либо в направлении между локальным и удаленным, либо между двумя местоположениями s3.

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

В частности,

aws s3 sync s3://some/s3/path /some/local/path
Дэн Приттс
источник
2

Проверьте сервер джунглей . Он работает с Amazon S3 и Rackspace Cloud Files. Вы можете смонтировать S3 и CF в разных местах вашей файловой системы, а затем использовать rsync между ними.

Алан Айви
источник
Спасибо, но я должен был упомянуть, что я ищу решение, которое я мог бы запустить как задание cron на компьютере с Linux. Я обновил вопрос.
Бен
2

Вы можете попробовать установить ведра с предохранителем, используя s3fs . После этого вы можете rsync из точки монтирования на локальный диск.

growse
источник
1
+1 для s3fs, я только что установил патч для поддержки файлов размером до 5 ТБ.
Бен Лемасурье
1

Вы можете настроить сервер Minio , открытый исходный код и S3-совместимый API. Вы можете настроить его на EC2 или на любом облачном провайдере в качестве альтернативного сервера и периодически использовать команду клиентов Minio для mc mirror получения зеркала S3. Вы можете автоматизировать то же самое, написав простой скрипт cron.

Надеюсь, поможет. Отказ от ответственности: я работаю на Minio

koolhead17
источник
1

Для онлайн-синхронизации сегментов вы можете использовать межрегиональную репликацию. Таким образом, все обновления в исходной корзине будут автоматически синхронизированы с корзиной S3 в другом регионе: https://docs.aws.amazon.com/AmazonS3/latest/dev/crr.html.

Имейте в виду, что для корзины необходимо включить управление версиями, поэтому, если вы делаете обновления / удаления объектов в корзинах, вы захотите включить политику жизненного цикла для удаления старых объектов.

timurb
источник
Это то, что мы решили использовать, но учтите, что репликация - это не то же самое, что зеркалирование. Большая разница в том, что удаления не распространяются между источником и местом назначения (место назначения будет обновлять файлы, которые изменяются, но, кажется, никогда не удаляет их).
Скотт Гартнер