Backup-manager — настройка резервного копирования Linux-сервера на Amazon S3 за 5 минут
Submitted by Ромка on Сб, 13/03/2010 - 18:45
Настраиваю сейчас под свои веб-девелоперские нужды сервер на основе Debian lenny и когда дошел до настройки резервного копирования данных стало понятно, что задача эта хоть и простая, но очень уж муторная: нужно написать и отладить скрипты, которые будут архивировать нужные папки (причем желательно делать инкрементальные архивы), базы данных, хранилища subversion, а затем переносить эти архивы на удаленный сервер. Задача в общем-то посильная для любого опытного программиста, но минимум день-два написание этих скриптов отнимет.
Очень удачной находкой для решения этой задачи стал backup-manager — это бесплатный набор bash-скриптов, позволяющих:
- архивировать любые папки, в том числе и создавать инкрементальные архивы. В конфиге просто указывается список директорий, которые должны быть скопированы, а также "черный список" файлов, которые копироваться не будут.
- делать резервное копирование баз данных MySQL. В конфиге указываются логин и пароль mysql-юзера, имеющего доступ к базам, а всю остальную работу backup-manager делает сам.
- делать резервное копирование svn-репозиториев, причем бэкап делается не копированием папки с хранилищем, а с помощью команды svnadmin dump.
- копировать созданные архивы на удаленные сервера по FTP, SSH или (это самая важная для меня фича) в хранилище Amazon S3, а также записывать их на DVD.
Таким образом, один этот этот набор скриптов решил абсолютно все мои задачи, связанные с резервным копированием. Настраивается все это хозяйство не более чем за пять минут, так как в конфигурационном файле каждый параметр имеет подробные комментарии, так что проблем с настройкой возникнуть ни у кого не должно.
Правда запустить копирование архивов на Amazon S3 с ходу не получилось, описание и решение возникших трудностей под катом.
При попытке скопировать данные в хранилище Amazon S3 backup-manager падал с ошибкой типа:
Error reported by backup-manager-upload for method "s3", check "/tmp/bmu-log.kRZndC"
В свою очередь в файле /tmp/bmu-log.kRZndC лежало абсолютно неинформативное сообщение:
The upload transfer "s3" failed.
Но вот в syslog записывались более полезные сообщения:
Mar 12 16:12:26 dom7 backup-manager[26326]: info * Using the upload method "S3". Mar 12 16:12:26 dom7 backup-manager-upload[28932]: info * Trying to upload files to s3 service - main::verbose (/usr/bin/backup-manager-upload l. 1000) Mar 12 16:12:26 dom7 backup-manager-upload[28932]: error * Net::Amazon::S3 is not available, cannot use S3 service : Can't locate Net/Amazon/S3.pm in @INC (@INC contains: /etc/per$ Mar 12 16:12:26 dom7 backup-manager-upload[28932]: error * The upload transfer "s3" failed. - main::verbose_error (/usr/bin/backup-manager-upload l. 1007) Mar 12 16:12:26 dom7 backup-manager[26326]: error * Error reported by backup-manager-upload for method "s3", check "/tmp/bmu-log.kRZndC". Mar 12 16:12:26 dom7 backup-manager[26326]: debug * DEBUG: exec_post_command() Mar 12 16:12:26 dom7 backup-manager[26326]: info * Releasing lock Mar 12 16:12:26 dom7 backup-manager[26326]: debug * DEBUG: release_lock()
Эти ошибки были устранены после установки пакета libnet-amazon-s3-perl, но копирование на S3 опять работать не захотело, теперь уже с такими сообщениями об ошибках:
Mar 12 16:35:45 dom7 backup-manager[4800]: info * Using the upload method "S3". Mar 12 16:35:45 dom7 backup-manager-upload[7272]: info * Trying to upload files to s3 service - main::verbose (/usr/bin/backup-manager-upload l. 1000) Mar 12 16:35:45 dom7 backup-manager-upload[7272]: error * File::Slurp is not available, cannot use S3 service - main::send_files_with_s3 (/usr/bin/backup-manager-upload l. 1001) Mar 12 16:35:45 dom7 backup-manager-upload[7272]: error * The upload transfer "s3" failed. - main::verbose_error (/usr/bin/backup-manager-upload l. 1007) Mar 12 16:35:45 dom7 backup-manager[4800]: error * Error reported by backup-manager-upload for method "s3", check "/tmp/bmu-log.uOcYNB". Mar 12 16:35:45 dom7 backup-manager[4800]: debug * DEBUG: exec_post_command() Mar 12 16:35:45 dom7 backup-manager[4800]: info * Releasing lock Mar 12 16:35:45 dom7 backup-manager[4800]: debug * DEBUG: release_lock()
После установки пакета libfile-slurp-perl пропали и эти ошибки и данные стали корректно копироваться на S3. Ура! Теперь остается добавить запуск бэкап менеджера в cron и можно спать спокойно :)
15 Comments
можно ли бекапить таким способом на шаред-хостинге?
Submitted by Сергей (не проверено) on
хочу сделать зеркало сайта на другом хостинге
Думаю, зависит от шареда. На
Submitted by Content Provider (не проверено) on
Думаю, зависит от шареда.
На Мастерхосте или nic.ru вам предоставляют доступ по ssh и значит все сможете настроить.
У меня не так навороченно, но бэкапы делает.
Ромка wrote:...архивировать
Submitted by тролль (не проверено) on
[quote=Ромка]...архивировать любые папки, в том числе и создавать инкрементальные архивы. В конфиге просто указывается список директорий...[/quote]
В Linux нет папок, а есть каталоги (directories), ибо каталог -- такая же запись, как и файл. Папки -- это от лукавого (Билла Гейтса).
я вот решил попробывать
Submitted by Anonymous (не проверено) on
я вот решил попробывать сначала локально протестить как он работает? потом есть виды делать бэкап сервака на свою тачку, но млин затык установил бакап манагер настроил конфиг(пока тока под локальный тест) а как его запускать чтоб делал бэкап? как его засунуть в крон чтоб бэкапил каждую неделю в пятницу?
А черт его знает. Сам ищу уже
Submitted by Anonymous (не проверено) on
А черт его знает. Сам ищу уже полчаса.
крон
Submitted by Cerber (не проверено) on
некропост, но все же, кому то может поможет
на редхатных линуксах, при установке из репозитория, крон-скрипт записывается в:
/etc/cron.daily/backup-manager.cron
чтобы он запускался, нужно в конфиге разрешить запуск:
export BM_DAILY_CRON="true"
и тестится собственно ручным запуском скрипта
Не копирует на s3
Submitted by Rastler (не проверено) on
А может кто знает, у меня начинает копировать и прерывается с ошибкой
:1: parser error : Start tag expected, '<' not found
500 read failed: Соединение сброшено другой сторон
^ at /usr/share/perl5/Net/Amazon/S3.pm line 782
Ставил из портов, система Debian Lenny
Не копирует на s3
Submitted by Rastler (не проверено) on
Проблема в принципе обозначилась, решается
но теперь новая, проблема с DateTime::Locale::Base
пишет out of memory, бум разбираться :)
Хотя конечно это не есть хорошо, будаю надо искать более изящное решение, либо писать свое
Новая версия
Submitted by SHKEd (не проверено) on
В новой версии скрипта исправлена ошибка с S3 (по крайне мере так сказано, я пока не использую S3).
Отлично!
Submitted by Mihail loban on
Юникод или Уникод (англ. Unicode) — стандарт кодирования символов, позволяющий представить знаки практически всех письменных языков. Стандарт предложен в 1991 году некоммерческой организацией «Консорциум Юникода» (англ. Unicode Consortium, Unicode Inc.). Применение этого стандарта позволяет закодировать очень большое число символов из разных письменностей: в документах Unicode могут соседствовать китайские иероглифы, математические символы, буквы греческого алфавита, латиницы и кириллицы, при этом становится ненужным переключение кодовых страниц. Стандарт состоит из двух основных разделов: универсальный набор символов (англ. UCS, universal character set) и семейство кодировок (англ. UTF, Unicode transformation format). Универсальный набор символов задаёт однозначное соответствие символов кодам — элементам кодового пространства, представляющим неотрицательные целые числа. Семейство кодировок определяет машинное представление последовательности кодов UCS.
Резервное копирование на веб-сервере
Submitted by Артур (не проверено) on
Я тоже долго пытался найти решение для бекапа своих проектов, чего только я не попробовал, в итоге скрипт наваял - простой)) даже вот тут http://www.artcom-ufa.ru/posts/2011/07/12/rezervnoe-kopirovanie-na-veb-servere статью написал, чтобы не забыть если вдруг.
Вот мой способ для бэкапа.
Submitted by newzenon (не проверено) on
Вот мой способ для бэкапа. http://zenon.sytes.net/rotation-backup/
комментарий к топику
Submitted by Anonymous (не проверено) on
Спортивные эстафеты на любой вкус
Как восстановить данные из бекапа ???
Submitted by Anonymous (не проверено) on
Как восстановить данные из бекапа ???
например полностью или только указанный путь, или за определенную дату (он ведь поддерживает инкрементальность) .
об этом нет ни слова в документации, конфиг файле и в вашей статье.
или вас это совсем не заботит ? :)
пытаюсь найти хоть что-то погуглив но находятся скрипты однофамильцы а по делу ничего...