Как синхронизировать файлы с Linux на Amazon S3 — CloudSavvy IT
AWS S3 — это сервис облачного хранения Amazon, позволяющий хранить отдельные файлы как объекты в корзине. Вы можете загружать файлы из командной строки на вашем Linux-сервере или даже синхронизировать целые каталоги на S3.
Если вы просто хотите поделиться файлами между экземплярами EC2, вы можете использовать Том EFS и подключите его непосредственно к нескольким серверам, полностью исключив «облако». Но вы не должны использовать это для всего, потому что это намного дороже чем S3, даже с включенным нечастым доступом.
Ограничить доступ S3 к пользователю IAM
Вероятно, вашему серверу не нужен полный root-доступ к вашей учетной записи AWS, поэтому, прежде чем выполнять какую-либо синхронизацию файлов, вы должны назначить нового пользователя IAM для своего сервера. Имея пользователя IAM, вы можете ограничить свой сервер только управлением своими корзинами S3.
От Консоль управления IAM, сделайте нового пользователя и включите «Программный доступ».
Вам будет предложено выбрать разрешения для этого пользователя. Создайте новую группу и назначьте ей разрешение «AmazonS3FullAccess».
После этого вам дадут ключ доступа и секретный ключ. Запишите это; они понадобятся вам для аутентификации вашего сервера.
Вы также можете вручную назначить более подробные разрешения S3, такие как разрешение на использование определенного сегмента или только для загрузки файлов, но ограничение доступа только для S3 должно подойти в большинстве случаев.
Синхронизация файлов с s3cmd
s3cmd
утилита, предназначенная для облегчения работы с S3 из командной строки. Он не является частью интерфейса командной строки AWS, поэтому вам придется вручную установить его из диспетчера пакетов вашего дистрибутива. Для систем на основе Debian, таких как Ubuntu, это будет:
sudo apt-get install s3cmd
однажды s3cmd
установлен, вам нужно связать его с пользователем IAM, которого вы создали для управления S3. Запустите конфигурацию с:
s3cmd --configure
Вас попросят указать ключ доступа и секретный ключ, которые вам дала консоль управления IAM. Вставьте их сюда. Есть еще несколько вариантов, таких как изменение конечных точек для S3 или включение шифрования, но вы можете оставить их все по умолчанию и просто выбрать «Y» в конце, чтобы сохранить конфигурацию.
Чтобы загрузить файл, используйте:
s3cmd put file s3://bucket
Замена «ведро» с вашим именем ведра. Чтобы получить эти файлы, запустите:
s3cmd get s3://bucket/remotefile localfile
И, если вы хотите синхронизировать весь каталог, запустите:
s3cmd sync directory s3://bucket/
Это скопирует весь каталог в папку на S3. При следующем запуске он будет копировать только те файлы, которые были изменены с момента последнего запуска. Он не удалит файлы, если вы не запустите его с --delete-removed
вариант.
s3cmd sync
не будет запускаться автоматически, поэтому, если вы хотите регулярно обновлять этот каталог, вам нужно будет регулярно запускать эту команду. Вы можете автоматизировать это с cron
; Откройте свой crontab с crontab -e
и добавьте эту команду в конец:
0 0 * * * s3cmd sync directory s3://bucket >/dev/null 2>&1
Это будет синхронизировать «каталог» с «ведром» один раз в день. Кстати, если crontab -e
ты застрял в vim
, вы можете изменить текстовый редактор по умолчанию с export VISUAL=nano;
или что вы предпочитаете.
s3cmd
имеет много подкоманд; вы можете скопировать между ведрами с cp
переместите файлы с mv
и даже создавать и удалять сегменты из командной строки с mb
а также rb
соответственно. использование s3cmd -h
для полного списка.
Другой вариант: AWS CLI
за s3cmd
Есть несколько других параметров командной строки для синхронизации файлов с S3. AWS предоставляет свои инструменты вместе с AWS CLI. Вам понадобится Python 3+, и вы можете установить CLI из pip3
с:
pip3 install awscli --upgrade --user
Это установит aws
команда, которую вы можете использовать для взаимодействия со службами AWS. Вам нужно будет настроить его так же, как s3cmd, что вы можете сделать с помощью:
aws configure
Вас попросят ввести ключ доступа и секретный ключ для вашего пользователя IAM.
Синтаксис для AWS CLI похож на s3cmd
, Чтобы загрузить файл, используйте:
aws s3 cp file s3://bucket
Чтобы синхронизировать всю папку, используйте:
aws s3 sync folder s3://bucket
Вы можете копировать и даже синхронизировать между группами с помощью одних и тех же команд. Ты можешь использовать aws help
для полного списка команд, или прочитайте ссылка на команду на их сайте.
Полные резервные копии: Restic, Duplicity
Если вы хотите делать большие резервные копии, вы можете использовать другой инструмент, а не простую утилиту синхронизации. Когда вы синхронизируете с S3 с s3cmd
или интерфейс командной строки AWS, любые внесенные вами изменения будут перезаписывать текущие файлы. Потому что основное беспокойство облачного хранилища файлов обычно не сбой привода, но случайное удаление без доступа к истории изменений, это проблема.
AWS поддерживает управление версиями файлов, что несколько решает эту проблему, но вы все равно можете использовать более мощную программу резервного копирования, чтобы справиться с ней самостоятельно, особенно если вы делаете резервные копии на полном диске.
двуличность это простая утилита, которая создает резервные копии файлов в виде зашифрованных томов TAR. Первый архив является полной резервной копией, а затем все последующие архивы являются инкрементными, в которых хранятся только изменения, сделанные со времени последнего архива.
Это очень эффективно, но восстановление из резервной копии менее эффективно, так как процесс восстановления должен следовать цепочке изменений, чтобы прийти к окончательному состоянию данных. Restic Решает эту проблему, храня данные в зашифрованных блоках с дедупликацией, и сохраняет снимок каждой версии для восстановления. Таким образом, текущее состояние файлов легко ссылаться, и каждая ревизия все еще доступна.
Оба инструмента можно настроить для работы с AWS S3, а также с несколькими другими поставщиками систем хранения. В качестве альтернативы, если вы просто хотите создать резервную копию экземпляров EC2 на основе EBS, вы можете использовать добавочные снимки EBSХотя это дороже, чем резервное копирование вручную на S3.