|
||
Ответить |
|
#1
|
|
Вес репутации:
0
Регистрация: 27.02.2009
Адрес: Москва
Сообщений: 7,302
Сказал(а) спасибо: 578
Спасибок 2,623
в 1,832 сообщениях |
Backup конфигов FreeBSD с отправкой архива на почту -
28.10.2010, 12:42
Для небольшой локальной сети был установлен NAS под FreeBSD и, естественно, в конце концов встал вопрос бэкапа его конфигурации на случай краха системы. Ничего громоздкого наворачивать не хотелось, тем более, что скорость восстановления в случае чего пока не критична. Поэтому было принято решение написать простейший скриптик под себя, каждую ночь складывающий в архив необходимые файлы. А в качестве внешнего хранилища был выбран почтовый сервер.
Оговорюсь сразу. Кому этот способ не подойдёт:
В нашем случае бэкапится база 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 Далее перекодируем получившийся архив в понятный почтовикам вид и отправляем на почту с темой «server backup» /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 #!/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 chmod 750 /home/%username%/backup.sh Осталось добавить задачу выполнения скрипта в cron. Запускаем crontab -e и, c помощью vi, вписываем строку PHP код:
Для перехода в режим редактирования в Vi необходимо нажать i. Для выхода с сохранением файла Esc и :wq С такой записью скрипт будет выполняться каждую ночь в 4 часа 1 минуту. Просмотреть все записи crontab crontab -l Примечание: Можно также в имя архива добавить дату и переменные. /usr/local/bin/rar a -ow -inul -pПАРОЛЬ_НА_АРХИВ /var/tmp/server_backup_`date "+%Y-%m-%d"`.rar <!-- Вопросы задаем на форуме, не в ЛС --> |
Ответить |
Опции темы | |
Опции просмотра | |
|
|