Архив заметок

Бэкап MySQL+планировщик cron и отправка на FTP

Просмотров: 8784Комментарии: 1
НовостиFreeBSDMySQL
Дошли руки до резервного копирования. Раньше копировал вручную необходимые данные smile Конечно это прошлый век, но так как сервер не используется в продуктиве, я особо не парился.

Теперь же захотелось попробовать автоматический бэкап баз данных, файловой системы, вернее отдельных каталогов, в которых находятся важные конфиги, и дальнейшей отправки всего этого хозяйства на сторонний ftp серверок. Плюс к этому добавить в планировщик задания, дабы все это дело происходило без моего вмешательства.

Источники для этого я использовал этот и этот. Ничего не украл, просто немного допилил для себя, чтобы все работало без запинки. Итак пример конфигов.

Для Мускула:

Т.К. мне надо было все базы разом, я заюзал пользователя root. В принципе здесь все понятно, останавливаться на описании каждой опции не имеет смысла. Создайте файл с любым именем и:

backup-mysql.sh

#!/bin/sh
BACKUP=/data/backup/mysql
MUSER="root"
MPASS="пароль"
MHOST="localhost"
FTPD="infoblog.ws-mysql"
FTPU="имя пользователя"
FTPP="пароль"
FTPS="info.serveblog.net"
TAR="$(which tar)"
GZIP="$(which gzip)"
FTP="$(which ftp)"
MYSQL="$(which mysql)"
MYSQLDUMP="$(which mysqldump)"
NOW=$(date +"%d%m%y")
mkdir $BACKUP/$NOW
DBS="$($MYSQL -u $MUSER -h $MHOST -p$MPASS -Bse 'show databases')"
for db in $DBS
do
mkdir $BACKUP/$NOW/$db
FILE=$BACKUP/$NOW/$db/$db.sql.gz
echo $i; $MYSQLDUMP --add-drop-table --allow-keywords -q -c -u $MUSER -h $MHOST -p$
done
ARCHIVE=$BACKUP/infoblog.ws-$NOW.tar.gz
ARCHIVED=$BACKUP/$NOW
$TAR -zcvf $ARCHIVE $ARCHIVED
cd $BACKUP
DUMPFILE=infoblog.ws-$NOW.tar.gz
$FTP -n $FTPS <<END_SCRIPT
quote USER $FTPU
quote PASS $FTPP
prompt off
binary
cd $FTPD
quote PASV
mput $DUMPFILE
quit
END_SCRIPT
rm -rf $ARCHIVED

Теперь необходимые папки для бэкапа. В принципе можете запихнуть необходимые Вам названия каталогов, на вкус и цвет smile

backup-fs.sh

#!/bin/sh
BACKUP=/data/backup
FTPD="infoblog.ws-fs"
FTPU="пользователь"
FTPP="пароль"
FTPS="info.serveblog.net"
TAR="$(which tar)"
GZIP="$(which gzip)"
FTP="$(which ftp)"
FILE="/etc /usr/local/etc"
NAME=$(date +"%d%m%y")
tar -cPjf /data/backup/infoblog.ws_fs-${NAME}.tar.bz2 ${FILE}
cd $BACKUP
DUMPFILE=infoblog.ws_fs-$NAME.tar.bz2
$FTP -n $FTPS <<END_SCRIPT
quote USER $FTPU
quote PASS $FTPP
prompt off
binary
cd $FTPD
quote PASV
mput $DUMPFILE
quit
END_SCRIPT

Теперь планировщик! Шлепаем crontab -e и вставляем или пишем:

0 4 * * * /bin/sh /root/backup.sh
0 4 * * * /bin/sh /root/backup-fs.sh

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

Чтобы просмотреть список уже созданных в кроне задач:

#crontab -l

Комментариев: 1 RSS

1Дмитрий28-06-2013 08:35

хохо спасибо друг - тоже тут озадачился бекапом Мускула

Думал может есть шаблон - теперь настрою все ручками.

Успеха!

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