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

Бэкап MySQL+FS+CRON+FTP. Обновление.

Просмотров: 2779Комментарии: 0
FreeBSDMySQL

Когда-то была запилена сия статья про резервное копирование бд, некоторых папок на фтп. Помогал этому добру планировщик.

Предыдущая статейка актуальная. В новой публикации я немного извратился с уровнем компрессии. Писать много не буду, не зачем. Выкладываю код скриптов на обозрение. Если будет желание, поделитесь своими наработками.

Итак:

mysqlbackup.sh
#!/bin/sh
MUSER="root"
MPASS="пароль"
MHOST="localhost"
FTPD="папка"
FTPU="пользователь"
FTPP="пароль"
FTPS="адрес ftp сервера"
TAR="$(which tar)"
CHOWN="$(which chown)"
CHMOD="$(which chmod)"
GZIP="$(which gzip)"
FTP="$(which ftp)"
MYSQL="$(which mysql)"
MYSQLDUMP="$(which mysqldump)"
DEST="./db_backup"
MBD="$DEST"
HOST="$(hostname)"
NOW="$(date +"%Y%m%d")"
# DO NOT BACKUP these databases, delemiter SPACE
IGN="information_schema mysql performance_schema"
DBS="$($MYSQL -u $MUSER -h $MHOST -p$MPASS -Bse 'show databases')"
for db in $DBS
do
    skipdb=-1
    if [ "$IGN" != "" ]; then
        for i in $IGN
        do
            [ "$db" == "$i" ] && skipdb=1 || :
            [ "$db" == "$i" ] && skipdb=1 || :
        done
    fi
    if [ "$skipdb" == "-1" ] ; then
        MBD="$DEST/$db"
        [ ! -d $MBD ] && mkdir -p $MBD || :
        FILE="$MBD/$NOW.sql.gz"
            $MYSQLDUMP --opt -u $MUSER -h $MHOST -p$MPASS $db | $GZIP -9 > $FILE
        FNUM="$(find $MBD/* | wc -l)"
        if [ $FNUM -ge 0 ] ; then
            find $MBD/* -type f -mtime 20 -exec rm -rf {} \;
        fi
    fi
done
ARCHIVE=$DEST
$TAR -cJf - $ARCHIVE | xz -9 -c - > mysql-$NOW.tar.gz
cd $DEST
DUMPFILE=mysql-$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 $ARCHIVE $DUMPFILE

И папки:

backup-fs.sh
#!/bin/sh
FTPD="папка на фтп"
FTPU="пользователь"
FTPP="пароль"
FTPS="адрес фтп"
TAR="$(which tar)"
GZIP="$(which gzip)"
FTP="$(which ftp)"
FILE="/etc /usr/local/etc /usr/local/www/apache24/data"
NAME=$(date +"%d%m%y")
$TAR -cJPf - ${FILE} | xz -7 -c - > server-fs-$NAME.tar.xz
DUMPFILE=server-fs-$NAME.tar.xz
$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 $DUMPFILE

Ну и cron:

# crontab -l
0       2       *       *       *       /bin/sh    /root/backup-mysql.sh
0       3       *       *       *       /bin/sh    /root/backup-fs.sh
Оставьте комментарий!

grin LOL cheese smile wink smirk rolleyes confused surprised big surprise tongue laugh tongue rolleye tongue wink raspberry blank stare long face ohh grrr gulp oh oh downer red face sick shut eye hmmm mad angry zipper kiss shock cool smile cool smirk cool grin cool hmm cool mad cool cheese vampire snake excaim question

Используйте нормальные имена.

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

(обязательно)