Резервное копированые данных с веб-сервера - используем "облака": привет Dropbox!

Dec 05, 2012 10:10

Посвящу пост резервному копированию данных с веб-серверов в "облака", с использованием Dropbox.

Некоторое время назад встал вопрос резервного копирования linux-сервера: файлы
конфигурации, дамп базы данных, PHP-скрипты, JS и CSS сайтов, в общем -
всего, что только требуется сохранить на случай, если с сервером что-то
произойдет, и данные будут потеряны.

Наиболее примитивный способ бэкапа - это с помощью crond делать архивы с копиями необходимых файлов, и периодически сливать копии по SFTP на свой домашний/рабочий комп, например, или на другой сервер. Эту задачу можно без проблем автоматизировать: сервер создает по расписанию архивы, а домашний комп или другой сервер по расписанию же коннектятся по SFTP и скачивают эти архивы.
У данного подхода есть несколько существенных недостатков:
1. На домашний комп под управлением Windows что-то автоматически копировать  - нетривиальная задача, хотя и решаемая с помощью расписания и скриптов.
2. Домашний комп обычно не включен круглосуточно.
3. Если копии делать на другой сервер, то требуется, как минимум, этот другой сервер, да и его надежность, опять же, не 100%.

В общем и целом, я полагаю, проблемы понятны.
Потому было решено использовать новые "облачные" технологии.

Итак, есть замечательный облачный сервис dropbox.com, позволяющий получить некоторое пространство в "облаке" совершенно бесплатно. Сразу дают 2 гигабайта, но с помощью выполнения некоторых несложных манипуляций (подключить акк фэйсбука, твиттера, твитнуть про дропбокс) можно еще расширить пространство, затем есть реферальная программа, с помощью которой можно расширить еще на 16 Гб (по 500 Мб за реферала, кстати, буду благодарен за регистрацию по моей реферальной ссылке http://db.tt/lmQlFor1), а если участвовать в программе Space Race (это программа для учебных заведений, для участия в ней достаточно иметь почтовый ящик на сервере своего института, притом можно уже и не учиться, закончив ВУЗ, главное чтоб ящик работал) - то еще получаем до 25 Гб на 2 года нахаляву.

На Dropbox все данные хранятся в облаке, и являются копиями папки Dropbox, которую создает клиент дропбокса на компьютере. Замечу, что подключить можно все свои компьютеры и серверы, и их папка Dropbox будет синхронизироваться через облако, таким образом, данные будут храниться и в облаке, и на машинах! При этом клиенты Dropbox поддерживает частичную синхронизацию, когда на каждой машине синхронизируются только разрешенные папки, а другие - нет (это позволяет, например, хранить в облаке, скажем, много гигов фотографий с домашнего компа, и при этом на другие компьютеры, ноутбук и сервер, например, фотографии скачиваться не будут).

Ну да перейдем от теории к практике. Итак, что требуется сделать для решения задачи резервного копирования?
1. Регистрируемся на dropbox.com (напрямую на сайте или по реферральной ссылке, например моей http://db.tt/lmQlFor1 ;) ).
2. Устанавливаем клиент на домашний компьютер, скачав его после регистрации.
3. На сайте, после регистрации и входа в систему, справа наверху жмем "Get free space!" и выполняем манипуляции по получению расширенного дискового пространства в облаке.
Hint: если подключить фотоаппарат или флешку от фотоаппарата с 3+ Гб фоток, и позволить дропбоксу слить их в облако (он сам обнаружит фотоаппарат или карточку памяти и предложит это сделать), то можно получить 3 гига халявного пространства - каждые 500 Мб фоток будут давать +500 Мб пространства, и так до 6 раз, т.е. 3 Гб. Фотки после процедуры удаляем.
4. Теперь ставим клиент дропбокса на сервер. Для CentOS 5 я использовал этот мануал: http://archive.ianwinter.co.uk/2011/05/16/centos-and-dropbox/
Ставим клиент согласно мануалу, запускаем, копируем предложенную ссылку и с ее помощью на сайте дропбокса активируем подключенный компьютер в аккаунте. На сервере появится папка ~/Dropbox (мы под рутом, так что это /root/Dropbox), в которой и лежат все папки и файлы, хранящиеся в облаке. Если там уже что-то есть (с домашнего компа), то клиент начнет скачивать это на сервер.
5. Настраиваем клиент дропбокса. Для этого идем сюда http://www.dropboxwiki.com/Using_Dropbox_CLI и читаем мануал, как управлять им через коммандную строку. Вообще, достаточно скачать dropbox.py (обратите внимание, ему требуется для работы Python версии 2.6, в CentOS 5 мне потребовалось отдельно его устанавливать: yum install python26), и с помощью команды типа "./dropbox.py exclude add ~/Dropbox/папка" исключить папки, которые не нужно копировать на сервер (скажем, папки с фотографиями), это позволит использовать дропбокс для каких-то личных нужд, и при этом не забивать лишними файлами диск сервера.
6. Настраиваем бэкап всего, что необходимо, в папку дропбокса. Для этого я использую скрипты в cron.daily, которые создают дамп БД, архивы конфигов и т.п., и все это сохраняют в папку ~/Dropbox/server_backup.

Вот пример скрипта для бэкапа MySQL базы данных:
[Spoiler (click to open)]
#!/bin/bash
# MySQL backup script
# Copyright © 2009 Vass
# This script is licensed under GNU GPL version 2.0 or above, see http://www.gnu.org/licenses/

# current time
NOW=$(date +"%Y%m%d%H%M%S")
# backup owner
USER="root"
GROUP="root"
# mysql auth
MUSER="mysql_user"
MPASS="mysql_pass"
MDB="Joomla"
MHOST="localhost"
# mysqldump path
MYSQLDUMP="$(which mysqldump)"
# bzip2 path
BZIP2="$(which bzip2)"
# chmod path
CHMOD="$(which chmod)"
# chmod path
CHOWN="$(which chown)"
# find path
FIND="$(which find)"
# rm path
RM="$(which rm)"
# backup destination path
BACKUP="/root/Dropbox/server_backup/mysql"
# backup lifetime in days
LIFETIME=7
# backup filename
FILE=$BACKUP/$MDB.sql.$NOW.bz2
# file permission
PERMISSION="700"

# create backup
$MYSQLDUMP -u$MUSER -h$MHOST -p$MPASS $MDB | $BZIP2 -c > $FILE
sleep 10
$CHMOD $PERMISSION $FILE
$CHOWN $USER:$GROUP $FILE

#deleting old backup files
#$FIND $BACKUP -mtime +$LIFETIME -exec $RM {} \;


Вот, собственно, и все. Теперь резервные копии будут помещаться в облако, а оттуда - на домашний компьютер, например, что существенно повышает надежность хранения информации и удобство восстановления в случае необходимости (для восстановления сервера "с нуля" достаточно будет установить на него дропбокс, и сразу после этого все бэкапы станут доступны в папке дропбокса - остается их скопировать "на место").
Previous post Next post
Up