safe
После истории с rm -rf / я озаботился всетаки каждодневным бэкапом данных, сначала планировал написть свой shell-скриптик, но потом всетаки решил поискать готовое решение...

Цель

  • Резервное копирование файлов проектов
  • Дамп базы данных проектов (MySQL)
  • Выгрузка дампов на удаленный FTP сервер

Средства

В качестве средства для резвного копирования был выбран fsbackup, в силу того, что отвечал нашим целям.

Система fsbackup была создана для обеспечения резервного копирования серверов разного масштаба на специально отведенном сервере бэкапа.

Установка

cd /usr/ports/sysutils/fsbackup
make install

Более подробно о работе с Портами и пакетами во FreeBSD, а так же о обновлении дерева портов и установленных пакетов.

Настройка

cd /usr/local/fsbackup

Создаем директорию для архивов

mkdir ./archive

Сделаем резервную копию и отредактируем конфигурационный файл

cp cfg_example server_backup.conf
vi server_backup.conf

Там все просто, да еще и на русском :)
Теперь укажите используемый конфигурационный файл в create_backup.sh

config_files="server_backup.conf"

Настройки для FTP

Файл server_backup.conf

# Тип хранилища
$cfg_type = "remote_ftp";

# Сервер на который будет копироваться бэкап.
$cfg_remote_host = "server.remote.ru:21";

# Логин под которым будет сохранятся бэкап.
$cfg_remote_login = "backup_login";

# Директория куда должны помещаться файлы бэкапа, директория должна присутствовать.
$cfg_remote_path = "/home/backup_login/backup";

# пароль для входа по ftp.
$cfg_remote_password = "backup_password";

Указываем директории и файлы для бэкапа

Доходим до $cfg_root_path и указываем корневую директорию, относительно которой описаны пути для помещения файлов (См. __DATA__).

$cfg_root_path = "/";

Указываем директории и файлы для бэкапа (директива __DATA__)

__DATA__

# Fsbackup
/usr/local/fsbackup
!/usr/local/fsbackup/cache
f!.core$
f!^core$
f!.o$
f!.log$

# BSD
/var/db/pkg
/usr/src/sys/i386/conf

# Users and PROJECT's
/home
/root
!/home/ftp
=!.netscape/cache/
=!.mozilla/.*/Cache/
=!.mozilla/.*/NewCache/
=!.mozilla/.*/News/
f!.*.avi$
f!.*.mpeg$
f!.*.mpg$
f!.*.mp3$

# System configuration
/etc
/var/cron/tabs
/var/spool/cron
/usr/local/etc

MySQL бэкап

Для бэкапа MySQL надо отредактировать ./scripts/mysql_backup.sh

Указываем логин, пароль, указываем какие БД нам дампить.

А также необходимо отредактировать стартовый файл ./create_backup.sh и указать что нам нужен бэкап MySQL!

backup_mysql=1

Далее, добавляем в крон запись

crontab -e
0 4 * * * /usr/local/fsbackup/create_backup.sh| mail -s"`uname -n` backup report" root

Краткая справка по крону и шпаргалка.

Секурность!

По поводу шифрования бэкапа смотрите http://www.opennet.ru/dev/fsbackup/#shi

Восстановление данных

Для полного восстановления данных из инкрементального бэкапа может использоваться скрипт ./scripts/fsrestore.sh, для восстановления просто отредактируйте пути внутри скрипта и запустите его.


Комментарии (57) на запись «FreeBSD. Резервирование данных при помощи fsbackup»

» Трекбеки скрыты, показать их?
  1. netnikogo | 04.03.2009 в 14:38

    rf -rf / ==> rm -rf /

  2. adw0rd | 04.03.2009 в 14:55

    Cпасибо, поправил!

  3. vasa_c | 04.03.2009 в 19:49

    а чем бэкапить NDBКластер? :)

  4. adw0rd | 04.03.2009 в 19:54

    Ну, во первых fsbackup делает mysqldump, может тем же самым и дампить?)

  5. joni | 25.03.2009 в 08:59

    Как добавить число копий бэкапа в папке old?

  6. adw0rd | 25.03.2009 в 11:04

    А зачем вам OLD? Можете вообще от него отказаться.

    $cfg_save_old_backup = 0;

    Или по всей видимости надо переписывать скрипт...

  7. joni | 25.03.2009 в 13:53

    Так ведь если я уберу old то тогда у меня будет только один бэкап сделанный прошлым днем и все. а мне хотелось бы что хотя бы бэкапов пять прошлых дней оставались. там к примеру 01.02.09 02.02.09 ...05.02.09 ну а уж потом 01.02.09 заменяется на 06.02.09 Такое как осуществить

  8. adw0rd | 25.03.2009 в 15:23

    >тогда у меня будет только один бэкап сделанный прошлым днем

    Тут укажите сколько вы хотите промежуточных бекапов

    $cfg_increment_level = 5;

  9. Установка и настройка MediaWiki + 3 полезных расширения | Мастерская интернет-разработчика | 25.03.2009 в 16:32

    [...] FSBACKUP [...]

  10. Моделирование успешных блогов | Мастерская интернет-разработчика | 25.03.2009 в 16:36

    [...] fsbackup [...]

  11. Яндекс.Фотки — плагин для Wordpress | Мастерская интернет-разработчика | 25.03.2009 в 17:08

    [...] freebsd mysql бэкап [...]

  12. ImageCrop с помощью jQuery, плагина imgAreaSelect и PHP GD. | Мастерская интернет-разработчика | 25.03.2009 в 17:15

    [...] fsbackup f [...]

  13. MySQL. Количество вхождений подстроки в строку | Мастерская интернет-разработчика | 26.03.2009 в 20:56

    [...] бэкап freebsd [...]

  14. joni | 27.03.2009 в 09:43

    $cfg_increment_level = 5;

    Не работает. все прошлым днем.

  15. adw0rd | 27.03.2009 в 09:50

    Ну а сколько раз вы на дню делаете бекапов?

  16. Купил себе мониторчик :) | Мастерская интернет-разработчика | 27.03.2009 в 13:08

    [...] fsbackup [...]

  17. Сделал новый сервис browsInfo! | Мастерская интернет-разработчика | 27.03.2009 в 14:39

    [...] freebsd backup пароль [...]

  18. Пора делать свой код совместимым с PHP 6 | Мастерская интернет-разработчика | 28.03.2009 в 16:03

    [...] копирование сервера freebsd [...]

  19. joni | 29.03.2009 в 15:43

    1 раз в день. То есть бэкап каждый день

  20. adw0rd | 29.03.2009 в 23:54

    При $cfg_increment_level = 5 и бекапе раз в сутки, у вас получится 5 промежуточных бекапов (инкрементных) за 5 дней.

    Потом все эти промежуточные бекапы объединятся в один архив и поместятся в OLD.

    Так? Более подробно опишите все пожалуйста.

  21. Список плагинов для FireFox 2 - облегчающие жизнь веб-программисту! | Мастерская интернет-разработчика | 30.03.2009 в 00:12

    [...] FreeBSD настройка бэкапов [...]

  22. joni | 30.03.2009 в 09:01

    adw0rd —

    Совершенно верно!!!

    Но хотелось бы чтобы просто делался ежедневный полный бэкап отдельной базой, Необходимо так

    (а мне хотелось бы что хотя бы бэкапов пять прошлых дней оставались. там к примеру 01.02.09 02.02.09 …05.02.09 ну а уж потом 01.02.09 заменяется на 06.02.09 Такое как осуществить)

  23. Hello, World! | Мастерская интернет-разработчика | 30.03.2009 в 10:15

    [...] freebsd бэкап файлового сервера [...]

  24. Seodigger.com заговорил по русски! | Мастерская интернет-разработчика | 30.03.2009 в 15:56

    [...] fsbackup Оставить комментарий | Comment RSS | Теги: SEO, Сервисы Назад: Hello, World! Далее: Начинающим блоггерам! Выбор блога, регистрация в каталогах, поисковиках и закладках. [...]

  25. adw0rd | 31.03.2009 в 16:25

    joni, если полный бекап, то делайте full_backup и просто в OLD будут все ваши каждодневные полные бекапы.

    А потом от ненужных избавляйтесь если хотите, пару строк в sh и проблема решена...

  26. Александр | 17.04.2009 в 21:54

    Как делать бекап С Удалённого FTP-сервера ?

  27. adw0rd | 09.06.2009 в 17:29

    Александр, соединяться по ФТП и сливать каталоги, вроде fsbackup не предусмотрена к этому.

    Кстати, рекомендую покопаться в сторону монтирования удаленного ФТП как ФС.

  28. Александр | 09.06.2009 в 17:40

    Я нашёл способ делать backup ftp:

    wget -r ftp://user:pass@domain_name

  29. joni | 09.06.2009 в 17:46

    adw0rd В олд ложится только один бэкам прошлого дня, хочу 5ть. как сделать?

  30. adw0rd | 09.06.2009 в 17:46

    Александр, да, тоже вариант, спасибо! :)

  31. adw0rd | 10.06.2009 в 01:26

    joni, думаю переписать скрипт... Вы читали ман www.opennet.ru/dev/fsbackup/ ?

  32. joni | 10.06.2009 в 12:05

    конечно читал. но для меня переписать скрипт действительно сложно. похожих готовых решений нет?

  33. adw0rd | 10.06.2009 в 15:36

    joni, я не встечал... Можете как вариант попробовать Subversion, но там тоже надо будет писать какой-то контроллер для управления бекапом.

  34. swoek | 02.12.2009 в 13:18

    у меня при копирование выдает ошибку. WARNING: Nothing to backup.

  35. adw0rd | 02.12.2009 в 13:32

    при копировании «чего»?

  36. swoek | 02.12.2009 в 13:48

    уже разобрался спс

  37. phpdude | 05.01.2010 в 21:20

    спасибо, друг. на мотанге наконецто переделал все нахнах :)

    неплохая утилита в бекапе, надеюсь не увидим на что она способна при восстановлении :-! ...

  38. int | 16.02.2010 в 18:28

    плохо что нет версии для печати !!!

  39. adw0rd | 17.02.2010 в 13:04

    int, а что, фигово выглядит при печати? Я тут посмотрел «предварительный просмотр» в браузере... Если не распечатывать камменты — то нормально выглядит

  40. panser | 19.02.2010 в 00:52

    Creating remote_ftp full_backup: all

    Can't login to ftp server.

    Хотя с указаными данными в конфиге create_backup.sh легко захожу на ftp:

    $cfg_remote_host = «ftp.nextmail.ru:21»;

    $cfg_remote_login = «zaibizzz@nextmail.ru»;

    $cfg_remote_path = «/var/backup/fsbackup»;

    $cfg_remote_password = «***»;

    чего бы ето?

  41. adw0rd | 19.02.2010 в 01:10

    Единственное что меня смущает — ваш логин. Может надо только «zaibizzz» оставить?

  42. panser | 19.02.2010 в 01:49

    Нет логин именно такой, проверено.Мне кажется что в срипте стоит короткое время ожидание ответа от сервера.А сервер кстати долго разчихляется.Может ето где то можно подправить

  43. adw0rd | 19.02.2010 в 09:52

    Возможно, но я не видел таких настроек. Видимо надо скрипты ковырять

  44. panser | 21.02.2010 в 13:01

    Тогда еще вопросик.Мне нужно одновременно делать бекап и на локадьную машину, и на ftp. Как ето настроить, чтобы два раза не архивировалось все, а лиш один раз: сначала все забекапило, положоло в локальный каталог, апотом ето же передало по ftp ?

  45. adw0rd | 21.02.2010 в 18:09

    не знаю, я бы после выполнения скрипта сам запускал копирование по ftp/sftp (через свой скрипт)

  46. Tommy | 17.12.2010 в 10:27

    Я что то не понял.

    Что без переписания скрипт mysql_backup оно лить не будет на remote_ftp?

    Просто по скрипту видно что оно жмет и на этом exit.=)

  47. adw0rd | 17.12.2010 в 11:44

    Он бекап БД кладет в /usr/local/fsbackup/archive

    А потом все в куче отправляет в хранилище

    Т.е. да, mysql_backup сам никуда ничего не отправляет, он только делает архив

  48. Tommy | 18.12.2010 в 19:08

    Все я понял. спасибо.

    Просто я указал только те папки которые нужно мне для бэйкапа. просто создал два скрипта один для системы другой для веб сервера.

    а нужно было еще добавить /usr/local/fsbackup/archive

    просто с начало происходит выполнение скриптов а потом main скрипта так сказать

    это я так вдруг у кого то будет подобное=)

  49. Tommy | 27.12.2010 в 16:34

    вот тут товарищ joni говорил что в папку old пишется только один бэкап. да это так.

    мне нужно было тоже самое. для этого я закомментировал 4 строчки и папка OLD чиститься не будет.

    строчки 462-465 в файле fsbackup.pl

    написал комментарии что вообще эти строки делают

    # $ftp->cwd("$cfg_remote_path/OLD"); //переходим в директорию OLD
    # foreach $cur_dir ($ftp->ls()){ //ищем любые файлы (цикл)
    # $ftp->delete($cur_dir); // удаляем найденный файл
    # } //конец цикла

    и теперь выставляем:

    $cfg_backup_style = «backup»;

    сохранять копии. число промежуточных бэкапов 1.

    если поставить $cfg_backup_style = «full_backup»; у меня получаются имена файлов backup-0.tar.gz тоесть он время не ставить а значит файл будет заменяться.

    следующим комментарием найду как сделать что бы при full_backup ставилась дата.

  50. Дмитрий | 04.04.2011 в 09:40

    Добрый день,коллеги! Настроил сие чудо,всё отлично работает, но есть проблема не бэкапит ко мне на ftp большое количество данных (120ГБ),точнее бэкапит,но срывается где-то на 25ГБ, в связи с этим начал искать лог программы дабы выяснить причину. Проблема как раз в том что не смог найти лога, где он хранится и создается ли вобще ? Заранее спасибо за ответ!

    P.S. в ./var и /usr/local/fsbackup смотрел

  51. Kirill | 05.04.2011 в 10:26

    Уважаемый Tommy, а вы случаем не разобрались еще с тем как сделать что бы при full_backup ставилась дата?

    очень нужно! спасибо.

  52. Олег | 12.04.2011 в 23:10

    panser, символ @ нужно экранированть, должно получиться так test\@example.com :) сам только что пробовал, получилось :)

  53. Артур | 16.05.2011 в 10:08

    Мишка, а почему от написания собственного скрипта отказался?)

  54. adw0rd | 16.05.2011 в 11:52

    Да наверное не хотел тратить время, в этом и смысл использовать сторонний софт :)

  55. Артур | 08.08.2011 в 07:42

    А столько искал способ для бекапа сайтов... так и не нашел оптимальный и простой)), в итоге написал простой скрипт, пока работает норм, вот даже статью напаисал www.artcom-ufa.ru/posts/2...e-na-veb-servere.

  56. adw0rd | 08.08.2011 в 11:38

    А чего fsbackup не использовал?

    И для подобных строк:

    tar cpzf $BU_WWW_DIR\-saturn.tgz /www/saturn/ >/dev/null 2>&1

    надо использовать словари или кортежи/списки

  57. Артур | 08.08.2011 в 20:51

    ну тебе, как python программисту легко говорить ;-)

Оставить комментарий



Установка видеонаблюдения вакансии. Установка видеонаблюдения в Казани.