前一阵子有人的服务器被黑了,由于是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点钟运行备份工作。