Pull to refresh

Резервное копирование на Аmazon S3 для начинающих

Reading time2 min
Views3.8K
Давно хотел организовать дублирование на S3 ключевых личных файлов, и вот наконец собрался. Готового решения с толковой статьей на русском языке навскидку найти не удалось, так что пришлось вспоминать английский, благо — все оказалось не просто, а очень просто.

Этот короткий материал ориентирован на «самых-самых маленьких» пользователей Linux и служит целью показать, насколько легко и просто организовать резервное копирование на сервера Amazon S3.



Подразумевается, что у вас уже есть рабочий аккаунт на S3 (если нет — вам сюда или сюда) и минимальные знания консоли и любого текстового редактора.

От себя кратко скажу, что Amazon S3 — это неограниченное по объему хранилище для ваших данных в Интернете. Сервис платный, но при небольших объемах (порядка нескольких сот мегабайт) обходится в считанные рубли (максимум — десятки рублей) в месяц.

Также считаем, что свежие бэкапы вы делаете (а старые, соответственно, удаляется), и хранятся они в /home/backup.

Наша задача: каждую ночь (день, вечер), после того, как все новые бэкапы будут сделаны, копировать их на S3, а также удалять оттуда старые — те, которых в /home/backup больше нет (мы же чистим совсем старые бэкапы, верно?).

После недолгих поисков в Интернете я наткнулся за замечательную программу s3sync на Ruby, которая оказалась в состоянии сделать все, что требуется.

Первым делом устанавливаем Ruby:

Fedora: yum install ruby

Debian: sudo apt-get install ruby-full
Centos: yum install -y ruby
(Спасибо mikhailov)

Далее скачиваем и распаковываем s3sync:

wget s3.amazonaws.com/ServEdge_pub/s3sync/s3sync.tar.gz
tar vxzf s3sync.tar.gz


Создаем bash скрипт, который и будем запускать по крону:

vim go-s3sync-backup.sh

#/bin/sh
export AWS_ACCESS_KEY_ID=[ваш AWS_ACCESS_KEY_ID]
export AWS_SECRET_ACCESS_KEY=[ваш AWS_SECRET_ACCESS_KEY]
/home/user/s3sync/s3sync.rb --delete -r /home/backup/ [имя корзины на S3]:my-backup


chmod +x go-s3sync-backup.sh

Результатом работы скрипта будет папка my-backup в указанной корзине на S3 с вашими резервными копиями.

Первыми двумя параметрами мы задает данные для авторизации на S3 — можно их также указать в XML файле, но поместить их в переменные окружения — проще.

  • --delete служит для удаления с S3 тех файлов, которые отсутствуют в локальной папке
  • -r включает рекурсивный обход папок


Вот еще несколько полезных ключей:
  • --progress позволяет увидеть ход выполнения операции
  • -n позволяет увидеть, что планирует делать скрипт, не выполняя при этом самих действий (эдакий отладочный режим)


Добавляем наш скрипт в крон (скажем, пусть работает каждый день в 7 утра)

0 7 * * * /home/user/go-s3sync-backup.sh

Для очистки совести можно протестировать скрипт ручками и лишний раз проверить права доступа к используемой корзине (папке) на S3 — и можно спать со спокойной душой — ваши данные в надежном месте.

Спасибо всем прочитавшим, любые замечания и поправки приветствуются!
Tags:
Hubs:
Total votes 61: ↑52 and ↓9+43
Comments28

Articles