Передо мной возникла необходимость настроить резервное копирование на новом Linux-сервере, задачка эта оочень важная, но уж больно скучная: нужно написать и отладить скрипты, которые будут архивировать нужные папки (причем желательно делать инкрементальные архивы), базы данных, хранилища subversion, а затем переносить эти архивы на удаленный сервер. По этому я попробовал нагуглить готовое решение для этой задачки и в результате наткнулся на backup-manager — замечательный опенсорсный набор bash-скриптов, позволяющих:
архивировать любые папки, в том числе и создавать инкрементальные архивы. В конфиге просто указывается список директорий, которые должны быть скопированы, а также «черный список» файлов, которые копироваться не будут.
делать резервное копирование баз данных MySQL. В конфиге указываются логин и пароль mysql-юзера, имеющего доступ к базам, а всю остальную работу backup-manager делает сам.
делать резервное копирование svn-репозиториев, причем бэкап делается не копированием папки с хранилищем, а с помощью команды svnadmin dump.
шифровать архивы.
копировать созданные архивы на удаленные сервера по FTP, SSH или (это самая важная для меня фича) в хранилище Amazon S3, а также записывать их на DVD.
Таким образом, один этот этот набор скриптов решил абсолютно все мои задачи, связанные с резервным копированием. Настраивается все это хозяйство не более чем за пять минут, так как в конфигурационном файле каждый параметр имеет подробные комментарии, так что проблем с настройкой возникнуть ни у кого не должно.
Скачать можно отсюда: www.backup-manager.org/downloads/, либо просто можно установить пакет backup-manager (пример для Debian):
aptitude install backup-manager
Кроме того, нужно учесть, что для копирования данных в хранилище Amazon S3 в системе должны быть установлены пакеты libnet-amazon-s3-perl и libfile-slurp-perl:
Теперь остается только настроить запуск backup-manager по крону и можно спать спокойно.
Upd.
Все настройки хранятся в файле /etc/backup-manager.conf, вот основные его параметры:
# Папка, в которой архивы будут складываться локально
export BM_REPOSITORY_ROOT="/var/archives"
# Используемые методы резервного копирования
export BM_ARCHIVE_METHOD="tarball-incremental mysql svn"
# Далее для каждого из выбранных выше методов резервного копирования задаем настройки # Список папок, содержимое которых будем бэкапить BM_TARBALL_TARGETS[0]="/etc" BM_TARBALL_TARGETS[1]="/boot" BM_TARBALL_TARGETS[2]="/var/www" export BM_TARBALL_TARGETS
# Список исключений, то есть файлов в перечисленных выше папках, которые бэкапить не нужно
export BM_TARBALL_BLACKLIST="/dev /sys /proc /tmp *imagecache*"
# Теперь указываем как часто делать мастер-бэкап и инкрементный бэкап
export BM_TARBALLINC_MASTERDATETYPE="weekly"
export BM_TARBALLINC_MASTERDATEVALUE="1"
# Для бэкапа MySQL баз данных указываем какие базы бэкапить и параметры mysql-юзера
export BM_MYSQL_DATABASES="__ALL__"
export BM_MYSQL_ADMINLOGIN="user"
export BM_MYSQL_ADMINPASS="1234"
# Для бэкапа subversion-репозитория указываем путь к хранилищу
export BM_SVN_REPOSITORIES="/var/repositories"
# Выбираем метод аплоада созданного бэкапа а удаленный сервер
# (еще есть варианты ftp, ssh, ssh-gpg, rsync)
export BM_UPLOAD_METHOD="s3"
# Для копирования копий на Amazon S3 задаем имя корзины, access key и secret key
export BM_UPLOAD_S3_DESTINATION="basket-name"
export BM_UPLOAD_S3_ACCESS_KEY="ABC123"
export BM_UPLOAD_S3_SECRET_KEY="DEF456"
Это самые основные настройки, в самом конфиге есть еще пара десятков параметров, все они подробно прокомментированы.
По материалам http://habrahabr.ru/post/87435/