Я понимаю, как rsync работает на высоком уровне, но есть две стороны. С S3 нет демона, о котором можно было бы говорить - ну, есть, но в основном это просто HTTP.
Есть несколько подходов.
s3rsync (но это только болты на rsync для s3). Непосредственная. Не уверен, что я хочу зависеть от чего-то третьего лица. Я бы хотел, чтобы s3 только что поддержал rsync.
Существуют также некоторые rsync-клоны, такие как двуличие, которые утверждают, что поддерживают s3 без использования болтов. Но как это может сделать это? Они хранят индексный файл локально? Я не уверен, как это может быть так эффективно.
Я, очевидно, хочу использовать s3, потому что это дешево и надежно, но есть вещи, для которых rsync является инструментом, например, резервное копирование гигантского каталога изображений.
Какие варианты здесь? Что я потеряю, используя duplicity + s3 вместо rsync + s3rsync + s3?
Ответы:
Поскольку на этот вопрос был дан последний ответ, появился новый инструмент командной строки AWS
aws
.Он может синхронизироваться , как rsync, между локальным хранилищем и s3. Пример использования:
Если среда Python вашей системы настроена правильно, вы можете установить клиент AWS, используя
pip
:источник
rsync
, и это занимало в среднем 1 секунду, и только изменения происходили по моему медленному соединению.aws s3 sync
с другой стороны, заняло около 5 минут, повторная передача каждого файла.У инструмента s3cmd отличный
sync
вариант. Я использую его для синхронизации локальных резервных копий, используя что-то вроде:Это
--skip-existing
означает, что контрольная сумма не пытается сравнить существующие файлы. Если файл с таким именем уже существует, он просто быстро пропустит его и продолжит работу. Есть также--delete-removed
опция, которая удалит файлы, не существующие локально, но я хочу сохранить на S3 даже те, которые я очистил локально, поэтому я не использую это.источник
Не хочу никому говорить, что делать, но могу ли я помахать флагом за двуличие? или другое решение для инкрементного резервного копирования. Синхронизация все очень хорошо, но если вы делаете резервное копирование ночью, что произойдет, если вы не заметите проблему в течение двух дней? Ответ. Уже слишком поздно, ваши локальные файлы и резервная копия являются зеркальным отражением друг друга, и ни у одной из них нет нужных вам данных. Вы действительно должны рассмотреть возможность создания инкрементных резервных копий или моментальных снимков, чтобы можно было восстановить данные в определенный момент времени, а для эффективного выполнения этого вам нужны инкрементные резервные копии. И если потеря ваших данных - это сценарий конца света, храните копии у разных провайдеров, о которых вы никогда не узнаете, тогда они могут быть потеряны, взломаны, кто знает.
Я использую двуличность и s3, это хорошо, но процессор интенсивно. Но это делает инкрементные резервные копии. В чрезвычайной ситуации, когда вы хотите восстановить каталог или определенный файл, как это было в прошлую среду или в январе прошлого года, без восстановления других файлов в том же разделе, вам нужны инкрементные резервные копии и инструмент, в котором вы можете запросить только те файлы, которые вам нужны.
У меня есть cron, который заполняется каждые x месяцев, в ином случае - инкрементный и удаляет старше x месяцев, чтобы уменьшить объем хранилища s3, наконец, делает состояние сбора, так что каждое утро мне отправляют по почте со статусом. Вы должны регулярно следить за этим, чтобы вы заметили, когда ваша резервная копия не работает.
Для хранения локальных подписей требуется значительное локальное временное пространство, поэтому тщательно настройте временную папку. Это резервные копии / MNT, исключая различные каталоги внутри / MNT. Это хорошо для резервного копирования данных, для системных разделов используйте инструменты для создания образов amazon или моментальных снимков.
PHP скрипт:
источник
S3 - это система хранения объектов общего назначения, которая обеспечивает достаточную гибкость для проектирования того, как вы хотите ее использовать.
Я не уверен по вашему вопросу о проблемах с rsync (кроме индексации) или о проблемах со сторонним инструментом, с которыми вы столкнулись.
Если у вас большой набор хорошо структурированных файлов, вы можете запустить несколько синхронизаций s3 в своих подпапках.
Приятные люди в Amazon также позволяют вам выполнять импорт / экспорт с вашего портативного жесткого диска для передачи больших файлов на S3 или EBS - http://aws.amazon.com/importexport/, который вы можете использовать для первой загрузки.
Ознакомьтесь с рекомендациями Amazon s3 здесь - http://aws.amazon.com/articles/1904
Что касается различных инструментов, попробуйте их и посмотрите, что работает лучше для вас. Что касается ценообразования, то снижается стоимость резервирования, если она соответствует вашим потребностям - http://aws.amazon.com/s3/pricing/
Общая рекомендация - иметь быстрый многоядерный процессор и хороший сетевой канал.
ОБНОВЛЕНИЕ: упоминание о контрольной сумме на S3
Относительно S3 хранит данные в парах ключ-значение, и нет концепции каталогов. S3sync проверяет контрольную сумму (S3 имеет механизм для отправки контрольной суммы в качестве заголовка для проверки - заголовок Content-MD5). Лучшие практики связывают целостность данных, в ней есть подробности. S3 позволяет отправлять / проверять и получать контрольные суммы. Есть много людей, делающих инкрементные резервные копии с двуличностью. Несмотря на то, что rsync не запущен на S3, вы можете делать контрольные суммы, как я упоминал здесь.
rsync - проверенный инструмент, и большинство современных инструментов используют один и тот же алгоритм или библиотеку rsync или вызывают rsync извне.
источник
В качестве альтернативы вы можете использовать minio client aka mc. Команда 'mc mirror' сделает эту работу.
Вы можете написать простой скрипт как cronjob, который будет поддерживать синхронизацию с периодическим интервалом.
Надеюсь, это поможет.
источник
-w
флаг, который будет использоватьсяfsnotify
для отслеживания изменений. Его можно легко настроить как системный сервис или аналогичный.Я не уверен, что true rsync подходит для Amazon.
Насколько я понимаю, стандартный алгоритм rsync означает, что клиент вычисляет хэши для каждого блока файла, а сервер вычисляет хэши для своей копии и отправляет эти хэши клиенту, что означает, что клиент может определить, какие блоки были изменены и нуждаются в загрузке.
Это создает две проблемы для Amazon в том, что многие хэши должны отправляться через Интернет, а также требуется вычислительная мощность для вычисления всех тех хешей, которые могут увеличить расходы Amazon - возможно, поэтому они оставляют это сторонним поставщикам, которые могут взимать дополнительную плату за эту функцию.
Что касается клонов, они, очевидно, хранят хэши где-то, и где-то может варьироваться в зависимости от клона. Они могут хранить хэши как отдельный объект для каждого файла в Amazon или как базу данных, хранящуюся в Amazon, или они могут хранить их локально и удаленно.
Есть преимущества и недостатки в том или ином случае. Если хеши хранятся удаленно в отдельных файлах, то их постоянное получение может быть дорогостоящим. Если хеши хранятся в базе данных удаленно, эта база данных может стать большой, и может быть дорогостоящим их постоянное получение и обновление. Если хеши хранятся локально, это помогает сократить расходы, но создает другие сложности и проблемы.
(Конечно, у Amazon есть другие сервисы, поэтому можно было бы хранить базу данных в Amazon DB)
Как пример, я попробовал один ранний клон rsync много лет назад. Это было написано не для того, чтобы принять во внимание структуру ценообразования Amazon, и он выдавал большое количество http-запросов для извлечения хэша каждого блока, и, поскольку Amazon взимал плату за каждое получение, это означало, что хотя часть моего счета на хранение резко упала, часть переноса раздулся.
Вы теряете тот факт, что с rsync вы знаете, что сравниваете исходные файлы с файлами резервных копий. С двуличностью и другими клонами вы сравниваете ваши исходные файлы с хешем, который был взят при выполнении резервного копирования. Например, может быть возможен прямой доступ к S3 и замена одного из его файлов без повторного вычисления хэша или обновления базы данных хэша.
источник
После сравнения нескольких вариантов, упомянутых в этой теме, я решил перейти на S3fs. Это позволяет вам монтировать S3 как локальную файловую систему. Затем вы можете продолжить и использовать rsync так, как вы его уже знаете.
Это хороший учебник для начала: Amazon S3 с Rsync
Автор ранее использовал упомянутый s3sync, но затем переключился на опцию с S3Fs. Мне это нравится, потому что у меня также есть другие резервные папки, локально смонтированные через SSHFS.
источник