Форумы

GNU.SU - Записки нубо-линуксойда :: Форумы :: Разное :: Схабренное
 
<< Предыдущая тема | Следующая тема >>
Простейший бэкап конфигов FreeBSD с отправкой архива на почту
Модераторы: tastelinux, Frizze, andrey, Bender
Автор Добавил
tastelinux
Птн Окт 01 2010, 09:38
andreika

ID пользователя #1
Зарегистрирован: Птн Апр 30 2010, 12:25

Сообщений: 337
Для небольшой локальной сети был установлен NAS под FreeBSD и, естественно, в конце концов встал вопрос бэкапа его конфигурации на случай краха системы. Ничего громоздкого наворачивать не хотелось, тем более, что скорость восстановления в случае чего пока не критична. Поэтому было принято решение написать простейший скриптик под себя, каждую ночь складывающий в архив необходимые файлы. А в качестве внешнего хранилища был выбран почтовый сервер. Этим скриптом и хочу поделиться с вами.

Оговорюсь сразу. Кому этот способ не подойдёт:

  • заядлым параноикам
  • желающим в день Х восстановить работоспособность сервера за полчаса
  • у кого размер архива будет превышать 25 Мб. (в случае с gmail)


Пост ориентирован на таких же новичков, как и я. Описал всё по возможности максимально подробно.

Итак, имеем Network Access Server на FreeBSD, так же исполняющий роль Web-сервера для парочки сайтов и одного форума.
В моём случае бэкапится база MySQL, всё содержимое папочек /etc, /usr/local/etc (дабы не переписывать путь к каждому конфигу отдельно), конфигурация ядра, cron и директория с сайтами.

Начнём с самого сложного. Дамп базы MySQL осуществляем стандартной утилиткой mysqldump. Специально для неё создадим нового sql-пользователя «backup», имеющего минимум привелегий, достаточных для нашей задумки. Я выставил следующие: SELECT, FILE, SHOW DATABASES, LOCK TABLES, SHOW VIEW. Процесс создания пользователя описывать не буду ввиду разнообразия вариантов, а если что постараюсь ответить на все вопросы в комментариях.

Дамп базы в файл /var/tmp/all.sql осуществляется командой:

/usr/local/bin/mysqldump --opt -Aau backup -pПАРОЛЬ_ПОЛЬЗОВАТЕЛЯ_BACKUP > /var/tmp/all.sql


В принципе, всё должно получиться с первого раза. Дальше — проще.
Да не заминусуют меня заядлые линуксоиды, но в качестве архиватора я выбрал RAR, поскольку получившийся архив хотелось для пущей надёжности ещё и запаролить, а tar этого с ходу не умеет.
Установка RAR тривиальна:

cd /usr/ports/archivers/rar
make install clean



После успешной инсталляции, читаем мануал, подбираем необходимые ключи, указываем через пробел пути к файлам и папкам и проверяем работоспособность.
В моём случае, команда

/usr/local/bin/rar a -ow -inul -pПАРОЛЬ_НА_АРХИВ /var/tmp/server_backup.rar /var/tmp/all.sql /usr/src/sys/i386/conf/kernel /var/cron/tabs /etc /usr/local/etc /usr/local/www/data



создала архив /var/tmp/server_backup.rar, содержащий все перечисленные файлы и директории. Обратите внимание, если указывать пути к директориям со слэшем в конце, то поддиректории архивироваться не будут, а только файлы из корня указанной папки!

Далее перекодируем получившийся архив в понятный почтовикам вид и отправляем на почту с темой «server backup»

/usr/bin/uuencode '/var/tmp/server_backup.rar' server_backup.rar | mail -s 'server backup' 'ПОЧТА@gmail.com'



Естественно, отправку на почту можно заменить сливанием бэкапа на FTP или… куда угодно — смотря что есть в распоряжении :)
После успешной отправки, удалим наши архивы

rm /var/tmp/server_backup.rar
rm /var/tmp/all.sql



Ну и, наконец, весь скрипт в сборе выглядит так:

#!/bin/sh
/usr/local/bin/mysqldump --opt -Aau backup -pПАРОЛЬ_ПОЛЬЗОВАТЕЛЯ_BACKUP > /var/tmp/all.sql
/usr/local/bin/rar a -ow -inul -pПАРОЛЬ_НА_АРХИВ /var/tmp/server_backup.rar /var/tmp/all.sql /usr/src/sys/i386/conf/kernel /var/cron/tabs /etc /usr/local/etc /usr/local/www/data
/usr/bin/uuencode '/var/tmp/server_backup.rar' server_backup.rar | mail -s 'server backup' 'ПОЧТА@gmail.com'
rm /var/tmp/server_backup.rar
rm /var/tmp/all.sql



Сохраняем его любым известным нам способом как, например, /home/%username%/backup.sh (%username% — ваше имя в системе) и даём необходимые права

chmod 750 /home/%username%/backup.sh



После этого скрипт можно запустить и убедиться в работоспособности. Если что-то пойдёт не так, для дебага подойдут записи в /val/log/messages и /var/log/maillog

Осталось добавить задачу выполнения скрипта в cron. Запускаем crontab -e и, c помощью vi, вписываем строку

1 4 * * * /home/%username%/backup.sh



не забыв в конце нажать Enter (в самом конце файла должна быть пустая строка).
Для перехода в режим редактирования в Vi необходимо нажать i. Для выхода с сохранением файла Esc и :wq
С такой записью скрипт будет выполняться каждую ночь в 4 часа 1 минуту. Просмотреть все записи crontab

crontab -l



Так же хочу обратить внимание на то, что имена файлов и каталогов в архиве не шифруются! Открыв архив, например, в WinRAR вы сможете просмотреть все папки и их содержимое (структура каталогов сохраняется) однако не сможете открыть файлы не введя пароль.

Собственно, всё. Совершенству нет предела, так что с удовольствием выслушаю все предложения, пожелания и особенно критику.
Удачи и пусть полученный архив вам не пригождается ;)
Наверх
бэкап конфигов с отправкой архива на почту   backup config and send by mail   отправка конфигов на почту скрипт   

 

Перейти:     Наверх

Транслировать сообщения этой темы: rss 0.92 Транслировать сообщения этой темы: rss 2.0 Транслировать сообщения этой темы: RDF
Powered by e107 Forum System