• HOME
  • DOCS
  • WTF
  • TECH
  • LIFE
  • PAGES
    • ARCHIVE
    • TAGS
    • ABOUT
    • FRIENDS
    • RSS
  • TOOLS
    • GEO
    • RANDOM()
    • GOO.GL
    • CSS HEART
Aj's Blog

记录时间溜走的瞬间和折腾过的那些事

VPS服务器数据自动FTP备份: bash+lftp+crontab

2013-06-29  TECH  Backup  Bash  crontab  lftp  shell  2  

话不多少了直接上脚本

需要lftp支持,centos下 yum intslal lftp,debian下apt-get install lftp

#!/bin/bash
#--CONFIG--
MUSER="root"
MPASS="ROOT-PASSWORD-OF-YOUR-MYSQL"
MHOST="localhost"

FTPU="FTP-USERNAME-OF-YOUR-BACKUP-SERVER"
FTPP="FTP-PASSWORD-OF-YOUR-BACKUP-SERVER"
FTPS="IP-OF-YOUR-BACKUP-SERVER"
FTPDIR="TARGET-DIR-FOR-YOUR-BACKUP-DATA"

MYSQL="$(which mysql)"
MYSQLDUMP="$(which mysqldump)"

#---BAK STORE tmp files---
BAK="/root/backup"
GZIP="$(which gzip)"
TAR="$(which tar)"
NOW=$(date +"%Y%m%d")

#--clear old files first--
[ ! -d $BAK ] && mkdir -p $BAK || /bin/rm -f $BAK/*

#--mysqldump & tar codefiles--
DBS=("dbname-1" "dbnam-2")
DIR=("/home/wwwroot/site-1/" "/home/wwwroot/site-2/")
for db in ${DBS[*]}
do
    FILE=$BAK/sql-$db-$NOW.gz
    echo $FILE
    $MYSQLDUMP -u $MUSER -h $MHOST -p$MPASS $db | $GZIP -9 > $FILE
done
for(( i=0; i<${#DIR[@]}; i++ ))
do
    CODE=$BAK/code-${DBS[$i]}-$NOW.tar
    echo $CODE
    $TAR -cf $CODE ${DIR[$i]}
done

#--ftp upload then clear tmp files again--
lftp -u $FTPU,$FTPP -e "mkdir /$FTPDIR/$NOW;cd /$FTPDIR/$NOW; mput $BAK/*; quit" $FTPS
[ ! -d $BAK ] && mkdir -p $BAK || /bin/rm -f $BAK/*

#--crontab -e setting: every 3days--
# 0 3 */3 * * /root/backup.sh>/dev/nul 2&1
下一篇:   nginx+uwsgi+python环境搭建
上一篇:   小型网站CDN加速方案
  • nonozone says:
    July 15, 2013 at 01:00

    如果想把各个数据库单独命名备份然后再打包在一起要怎么做呢

    Reply
    • Aj says:
      July 15, 2013 at 22:28

      这个脚本就是数据、代码逐个备份然后在逐个FTP上传,如果你想打个统一的包就在2个for循环之后ftp之前打一个总包。

      Reply
  • Cancel reply