VPS自动备份脚本,backup到FTP

0
1072

前一阵子有人的服务器被黑了,由于是unmanaged plan,数据全丢,想想多少个日夜积累起来的数据全都会被抹掉,真是很担心,花了几天时间上网研究一下别人的备份方法,感觉通过脚本定时打包数据上传到ftp是比较简单可行的方法,于是结合Kloxo环境就有了以下的脚本:说明:

1.此脚本每日自动运行,如果条件允许可以安装mutt发送邮件附件备份到邮箱,但是如果网站经营时间较久,数据量太大的话不推荐。

2.我们在本地保留3天备份,在远端FTP空间保留5天备份。如需要保留更多,请自行更改参数。

内容:

#!/bin/bash
cd /home/backup
#Definier the name of Mysql data and webfile data
DataBakName=Data_$(date +"%Y%m%d").tar.gz
WebBakName=Web_$(date +%Y%m%d).tar.gz
OldData=Data_$(date -d -5day +"%Y%m%d").tar.gz
OldWeb=Web_$(date -d -5day +"%Y%m%d").tar.gz
#Delete Local Data 3Days before
rm -rf /home/backup/Data_$(date -d -3day +"%Y%m%d").tar.gz /home/backup/Web_$(date -d -3day +"%Y%m%d").tar.gz
#Export data of Mysql
mysqldump --add-drop-table --comments --complete-insert --extended-insert --hex-blob -uroot -p***** --databases DB1 | gzip > /home/backup/DB1.sql.gz
mysqldump --add-drop-table --comments --complete-insert --extended-insert --hex-blob -uroot -p***** --databases DB2 | gzip > /home/backup/DB2.sql.gz
#Pack database file
tar zcf /home/backup/$DataBakName /home/backup/*.sql.gz
rm -rf /home/backup/*.sql.gz
#Compress webfile data
tar --exclude=/home/admin/Trash --exclude=/home/admin/__processed_stats --exclude=/home/admin/kloxoscript --exclude=/home/admin/shareultra.cz.cc --exclude=/home/admin/support -zcvf /home/backup/$WebBakName /home/admin
#Upload to FTP Space Then Delete Old Data
ftp -v -n xxx.com << END
user username passowrd
type binary
cd backup
delete $OldData
delete $OldWeb
put $DataBakName
put $WebBakName
bye
END

3.把以上内容复制以后建立autobackup.sh文件,上传到服务器,Kloxo建议上传至/home/autobackup.sh

4.修改文件权限为755

5.最后修改etc/crontab在末尾加上

00 8 * * * root /home/autobackup.sh

这样此shell就会在每天的8点钟运行备份工作