网站数据备份是对于网站管理员来说是一件非常重要的事,手工备份不仅费时费力,而且还会不及时。如果你用的VPS或者独立服务器,那么可以用下面的方法实现自动备份。
自动备份一般可以通过电子邮件备份和FTP备份两种。并不是每个人都有FTP用来远程备份,免费邮箱现在倒是满天飞啊,而且个个都是好几个G,还号称可以无限扩容,免费的不用白不用,所以这里就介绍下怎么用邮件来备份VPS数据(方法不止一种,这是我用的方法)。 一、软件准备
首先你需要安装邮件发送客户端和mutt,如果你是Debian系统可以参考《Debian下安装配置exim4发送邮件》一文进行安装,至于mutt,安装很简单:
Debian下:

# apt-get install mutt

CentOS下:

# yum install mutt

安装完发封邮件试试:

mutt -s "Title: mail test" -a /home/test.tar.gz test@gmail.com < /home/mailmessage.txt 

-s后面是邮件的标题.

-a后面是发送的附件.

test@gmail.com 表示发送邮件的目的地址.

< /home/mailmessage.txt 表示读取mailmessage.txt以邮件正文形式发送.

如果收到邮件就表示安装成功了,下一步配置备份脚本和定时任务。
给出我用的脚本:

#!/bin/bash
#定义数据库的名字
DataBakName=Data_$(date +"%Y%m%d").tar.gz
WebBakName=Web_$(date +%Y%m%d).tar.gz
#删除本地3天前的数据
rm -rf /home/backup/Data_$(date -d -3day +"%Y%m%d").tar.gz
rm -rf /home/backup/Web_$(date -d -3day +"%Y%m%d").tar.gz
#导出mysql数据库
/usr/local/mysql/bin/mysqldump -u root -ppassword dbname > /home/backup/seeke.sql
#压缩数据库
tar zcf /home/backup/$DataBakName /home/backup/*.sql
#删除sql文件
rm -rf /home/backup/*.sql
#压缩网站数据
tar zcvf /home/backup/$WebBakName /home/wwwroot/
延时10秒钟
sleep 10s
#备份数据到邮箱
/usr/bin/mutt -s "Title:web+mysql backup" test@qq.com -a /home/backup/$DataBakName -a /home/backup/$WebBakName </home/backup/backup.txt
#注意防火墙是否打开了25端口,要不然邮件发不出去.
#mutt参数中 -s 指定发送邮件的标题
#mutt参数中 -a 指定邮件包含的附件,如果多个附件,每个附件都需要一个 -a 参数
#mutt参数中 </root/backup.txt 指定邮件的内容为backup.txt的内容

把以上脚本按照需求修改后保存成.sh文件,关于设置脚本自动运行,可以参考《debian下cron的使用方法和常见问题》一文,一般设置在凌晨,如:0 3 * * * /root/backup.sh