Linux VPS/服务器 网站及数据库自动本地备份并FTP上传备份脚本
准备工作:
需要提前在vps安装好lftp,lftp功能上比较强大,CentOS直接执行:YUM INSTALL lftp,debian执行:APT-GET INSTALL lftp 。
需要在vps上创建/HOME/BACKUP/ 目录,在ftp上创建BACKUP目录。
如果vps上数据库不多的话使用GODADDY的免费空间就可以(10GB空间,300GB流量),只要注册个域名就免费送。
下面将备份脚本进行部分注释:
#!/BIN/BASH
#FUNCIONT: BACKUP WEBSITE AND mysql DATABASE
#AUTHOR: LICESS
#WEBSITE: HTTPS://vpsVT.COM
#IMPORTANT!!!PLEASE SETTING THE FOLLOWING VALUES!
######~SET DIRECTORY YOU WANT TO BACKUP~######将下面的目录修改成自己要备份的目录,一般按我的都是在/HOME/WWWroot/下面所有直接写了需要备份的目录。可以继续再加:BACKUP_DIR5=你的目录 ,BACKUP_DIR后面的数字依次递增。如果不足4个,直接删除不需要的就可以,同时修改下面TAR ZCF 部分。
BACKUP_DIR1=VPSER.NET
BACKUP_DIR2=LNMP.ORG
BACKUP_DIR3=LICESS.ORG
BACKUP_DIR4=JUNGEHOST.COM
######~SET mysql USERNAME AND PASSWORD~######设置mysql的用户名和密码,最好是root,其他用户可能因为权限问题无法导出部分数据库。
mysql_USERNAME=root
MYSQL_PASSWORD=YOURMYSQLrootPASSWORD
######~SET MYSQL DATABASE YOU WANT TO BACKUP~######设置要部分的数据库,可以继续再加:BACKUP_DATABASE_NAME5=数据库名,BACKUP_DATABASE_NAME后面的数字依次递增。
BACKUP_DATABASE_NAME1=VPSER
BACKUP_DATABASE_NAME2=LICESS
BACKUP_DATABASE_NAME3=JUNGE
BACKUP_DATABASE_NAME4=VPSERORG
######~SET ftp INFORMATION~######设置用来存放备份数据的ftp信息
ftp_HOSTNAME=184.168.192.43 //FTP服务器的IP或者域名
FTP_USERNAME=VPSERNET //FTP服务器用户名
FTP_PASSWORD=YOURFTPPASSWORD //FTP服务器用户对应的密码
FTP_BACKUPDIR=BACKUP //备份到FTP上的目录,需要提前创建好。
#VALUES SETTING END!
TODAYWWWBACKUP=WWW-*-$(DATE +"%Y%M%D").TAR.GZ
TODAYDBBACKUP=DB-*-$(DATE +"%Y%M%D").SQL
OLDWWWBACKUP=WWW-*-$(DATE -D -3DAY +"%Y%M%D").TAR.GZ
OLDDBBACKUP=DB-*-$(DATE -D -3DAY +"%Y%M%D").SQL
TAR ZCF /HOME/BACKUP/WWW-$BACKUP_DIR1-$(DATE +"%Y%M%D").TAR.GZ -C /HOME/WWWROOT/ $BACKUP_DIR1 --EXCLUDE=SOFT
TAR ZCF /HOME/BACKUP/WWW-$BACKUP_DIR2-$(DATE +"%Y%M%D").TAR.GZ -C /HOME/WWWROOT/ $BACKUP_DIR2
TAR ZCF /HOME/BACKUP/WWW-$BACKUP_DIR3-$(DATE +"%Y%M%D").TAR.GZ -C /HOME/WWWROOT/ $BACKUP_DIR3 --EXCLUDE=TEST
TAR ZCF /HOME/BACKUP/WWW-$BACKUP_DIR4-$(DATE +"%Y%M%D").TAR.GZ -C /HOME/WWWROOT/ $BACKUP_DIR4
###上面为备份网站文件数据,因为我的网站比较零散,而且网站目录下面有些目录属于临时目录并不需要备份,所以可以在上面加上--EXCLUDE=不备份的目录。如果在前面加了BACKUP_DIR5=YOURDIR,则再加TAR ZCF /HOME/BACKUP/WWW-$BACKUP_DIR5-$(DATE +"%Y%M%D").TAR.GZ -C
/HOME/WWWROOT/ $BACKUP_DIR5 。如果多余则删除多余行。
/USR/LOCAL/MYSQL/BIN/Mysqldump -U$MYSQL_USERNAME -P$MYSQL_PASSWORD $BACKUP_DATABASE_NAME1 > /HOME/BACKUP/DB-$BACKUP_DATABASE_NAME1-$(DATE +"%Y%M%D").SQL
/USR/LOCAL/MYSQL/BIN/Mysqldump -U$MYSQL_USERNAME -P$MYSQL_PASSWORD $BACKUP_DATABASE_NAME2 > /HOME/BACKUP/DB-$BACKUP_DATABASE_NAME2-$(DATE +"%Y%M%D").SQL
/USR/LOCAL/MYSQL/BIN/Mysqldump -U$MYSQL_USERNAME -P$MYSQL_PASSWORD $BACKUP_DATABASE_NAME3 > /HOME/BACKUP/DB-$BACKUP_DATABASE_NAME3-$(DATE +"%Y%M%D").SQL
/USR/LOCAL/MYSQL/BIN/Mysqldump -U$MYSQL_USERNAME -P$MYSQL_PASSWORD $BACKUP_DATABASE_NAME4 > /HOME/BACKUP/DB-$BACKUP_DATABASE_NAME4-$(DATE +"%Y%M%D").SQL
###上面为备份MYSQL数据库,如果在前面加了BACKUP_DATABASE_NAME5=YOURDATABASENAME,则再加/USR/LOCAL/MYSQL/BIN/MYSQLDUMP -U$MYSQL_USERNAME -P$MYSQL_PASSWORD $BACKUP_DATABASE_NAME5 > /HOME/BACKUP/DB-$BACKUP_DATABASE_NAME5-$(DATE +"%Y%M%D").SQL 。如果多余则删除多余行。
RM $OLDWWWBACKUP
RM $OLDDBBACKUP
###删除3天前的备份###
CD /HOME/BACKUP/
###下面为自动上传部分,不得不说LFTP很强大,抛弃FTP吧####
LFTP $FTP_HOSTNAME -U $FTP_USERNAME,$FTP_PASSWORD << EOF
CD $FTP_BACKUPDIR
MRM $OLDWWWBACKUP
MRM $OLDDBBACKUP
MPUT $TODAYWWWBACKUP
MPUT $TODAYDBBACKUP
BYE
EOF
脚本下载地址:HTTP://SOFT.VPSER.NET/LNMP/BACKUP.SH
下载脚本,将脚本放到/ROOT/ 下面,按上面的注释修改脚本中的参数,并保存,如果不熟悉VI或者NANO编辑器,可以用winscp,执行:CHMOD +X /ROOT/BACKUP.SH 为脚本添加执行权限,执行:CRONTAB -E 添加定时执行
在CRONTAB中加入:0 3 * * * /ROOT/BACKUP.SH
凌晨3点自动执行/ROOT/BAKCUP.SH 脚本,备份VPS上的数据并上传到FTP上。