Храним резервные копии в Dropbox
Есть несколько актуальных пословиц и поговорок о необходимости создания резервных копий. Вне зависимости от того, размещаются ли данные на выделенном сервере или VDS, следует настроить резервное копирование не только локально, но и на отдельный сервер или сетевое хранилище.
В том случае, если используется панель управления (ISPManager, Vesta или другие подобные решения), функции резервного копирования могут быть реализованы средствами самой панели. Мы же рассмотрим случай, когда панель на сервере не используется или по каким-то причинам резервные копии необходимо делать другим способом. В нашем примере мы реализуем следующую схему — создание резервных копий каталогов с вэбсайтами и загрузка их на сервис Dropbox.
Для подготовки архивов мы будем использовать backup-manager — простой скрипт, доступный в репозиториях популярных операционных систем. Установка его производится с помощью штатного пакетного менеджера:
1 2 3 4 |
# Centos yum install backup-manager # Debian, Ubuntu apt-get install backup-manager |
После установки с помощью любимого текстового редактора отредактируем файл /etc/backup-manager.conf. Файл конфигурации достаточно хорошо документирован, мы же приведем его к следующему виду:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
export BM_DAILY_CRON="true" # запуск ежедневно export BM_REPOSITORY_ROOT="/var/backup-manager" # директория хранения бэкапов export BM_TEMP_DIR="/var/tmp" # временный каталог export BM_REPOSITORY_SECURE="true" export BM_REPOSITORY_USER="root" export BM_REPOSITORY_GROUP="root" export BM_REPOSITORY_CHMOD="770" export BM_ARCHIVE_CHMOD="660" export BM_ARCHIVE_TTL="5" export BM_ARCHIVE_FREQUENCY="daily" export BM_REPOSITORY_RECURSIVEPURGE="false" export BM_ARCHIVE_PURGEDUPS="true" export BM_ARCHIVE_PREFIX="$HOSTNAME" export BM_ARCHIVE_STRICTPURGE="true" export BM_ARCHIVE_NICE_LEVEL="10" export BM_ARCHIVE_METHOD="tarball-incremental mysql" # копии файлов и дампы баз данных MySQL export BM_TARBALL_NAMEFORMAT="long" export BM_TARBALL_FILETYPE="tar.gz" export BM_TARBALL_DUMPSYMLINKS="false" declare -a BM_TARBALL_TARGETS # ниже указываем необходимые директории BM_TARBALL_TARGETS[0]="/etc" BM_TARBALL_TARGETS[1]="/var/www" BM_TARBALL_TARGETS[2]="/home" BM_TARBALL_TARGETS[3]="/root" export BM_TARBALL_TARGETS export BM_TARBALLINC_MASTERDATETYPE="weekly" export BM_TARBALLINC_MASTERDATEVALUE="1" export BM_MYSQL_DATABASES="__ALL__" export BM_MYSQL_SAFEDUMPS="true" export BM_MYSQL_ADMINLOGIN="root" export BM_MYSQL_ADMINPASS="SeCuRePaSsWoRd" # пароль к MySQL export BM_MYSQL_HOST="localhost" export BM_MYSQL_PORT="3306" export BM_MYSQL_FILETYPE="bzip2" |
Теперь мы можем проверить, что backup-manager успешно создает архивы данных. Запустим его из командной строки и проверим результат:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
# backup-manager -v /var/backup-manager/server.itldc.com-etc.20140416.master.tar.gz: ok (9M, 80933e817bf70aa079ddb7515698e25e) /var/backup-manager/server.itldc.com-var-www.20140416.master.tar.gz: ok (1M, 0aae02715773e09298f7fd26e3d0a7f7) /var/backup-manager/server.itldc.com-home.20140416.master.tar.gz: ok (1M, 0b11cc7e8cecc36e9004b5bd223a963d) /var/backup-manager/server.itldc.com-root.20140416.master.tar.gz: ok (48M, 9147e1817894295015d7438e8ea28678) Creating a default MySQL client configuration file: /root/.backup-manager_my.cnf /var/backup-manager/server.itldc.com-all-mysql-databases.20140416.sql.bz2: ok (1M, 93cee49736e67c71001825b31606a86d) # ls -l /var/backup-manager/ итого 56512 -rw-rw---- 1 root root 396 Апр 16 14:20 server.itldc.com-20140416.md5 -rw-rw---- 1 root root 101758 Апр 16 14:20 server.itldc.com-all-mysql-databases.20140416.sql.bz2 -rw-rw---- 1 root root 8733029 Апр 16 14:20 server.itldc.com-etc.20140416.master.tar.gz -rw------- 1 root root 30605 Апр 16 14:20 server.itldc.com-etc.incremental.bin -rw-rw---- 1 root root 467 Апр 16 14:20 server.itldc.com-home.20140416.master.tar.gz -rw------- 1 root root 179 Апр 16 14:20 server.itldc.com-home.incremental.bin -rw-rw---- 1 root root 48862421 Апр 16 14:20 server.itldc.com-root.20140416.master.tar.gz -rw------- 1 root root 5825 Апр 16 14:20 server.itldc.com-root.incremental.bin -rw-rw---- 1 root root 102889 Апр 16 14:20 server.itldc.com-var-www.20140416.master.tar.gz -rw------- 1 root root 3668 Апр 16 14:20 server.itldc.com-var-www.incremental.bin |
Отлично, резервные копии созданы, а далее backup-manager будет запускаться каждую ночь — ведь мы указали BM_DAILY_CRON=»true» в его настройках. Перейдем к следующему этапу — загрузке наших архивов на серверы Dropbox.
Мы рекомендуем создать отдельный аккаунт Dropbox для хранения резервных копий. Как только регистрация будет пройдена, загрузим и установим официальный клиент dropbox на наш сервер:
1 |
wget -O - "http://www.dropbox.com/download/?plat=lnx.x86_64" | tar xvzf - -C /root |
После этого нам необходимо авторизовать наш сервер для начала работы с Dropbox. Запустим клиентский скрипт:
1 2 3 |
# /root/.dropbox-dist/dropbox Этот компьютер не подсоединен к аккаунту Dropbox... Чтобы подсоединить этот компьютер, перейдите по ссылке https://www.dropbox.com/cli_link?host_id=XXXXXXXXXXXXXXXXXXXXXXXXXXXX. |
Скопируйте указанную ссылку в буфер и откройте ее в броузере. При необходимости — авторизуйтесь на сайте Dropbox. Сразу после этого скрипт сообщит Вам об успешной привязке сервера к вашему dropbox-аккаунту:
1 |
Этот компьютер теперь подсоединен к аккаунту Dropbox. Добро пожаловать, Test User! |
Нажмем Ctrl-C и приступим к настройке клиента Dropbox. Для начала обеспечим запуск dropboxd при загрузке системы. Это сделать проще всего с помощью планировщика — запустим crontab -uroot -e и вставим сточку:
1 |
@reboot $HOME/.dropbox-dist/dropboxd |
После этого с помощью символьной ссылки укажем клиенту dropbox расположение файлов с резервными копиями:
1 |
ln -s /var/backup-manager /root/Dropbox/backup |
На этом настройка окончена. Перезагрузим сервер или запустим клиентскую часть dropbox:
1 |
/root/.dropbox-dist/dropbox & |
На этом настройка нашей системы резервного копирования завершена. Буквально через несколько минут в облачное хранилище будут загружены резервные копии наших данных и к ним в любой момент можно будет получить доступ. Каждый день backup-manager будет создавать обновленный архив с файлами и базами данных, а dropbox-клиент обеспечит их загрузку в облачное хранилище.