我觉得LAMP做的网站只需要备份mysql数据库和wordpress的目录就可以了,所以后面只备份了这两个东西。方法很简单,就是写一个脚本通过scp把备份的文件传到另一台主机,然后利用cron每天定时执行脚本。
首先得先有一台放备份文件的主机,我用的是帮帮给我的一个虚拟机(如果帮帮能看到的话,在此致谢),以前在网上看到过有人利用百度云来备份网站,等有空研究研究,百度云3GB的免费空间可真是不小。
1.备份mysql数据库,用mysqldump备份成sql语句:
mysqldump -uUSERNAME -pPASSWORD DBNAME > MYSQL_FILE_NAME.sql
2.备份wordpress和log日志:
tar -zcvf WORDPRESS_FILE_NAME.tar.gz /var/www /var/log
3.通过scp将文件传到备份主机,确保备份主机已开启ssh服务
scp -P10086 MYSQL_FILE_NAME.sql WORDPRESS_FILE_NAME.tar.gz username@IP:/home/username/backup
4.发送邮件通知,安装sendmail,通过sendmail命令发送简单的通知邮件
(echo "Subject: Report from the ALIYUN";echo "The backup is finished !";echo $DATE) | sendmail -f ALI@root.com -t abc@123.com
5.删除应用服务器上的备份文件,节省空间:
rm -rf MYSQL_FILE_NAME.sql WORDPRESS_FILE_NAME.tar.gz
6.把以上过程整理成一个脚本:
#!/bin/bash
#filename:backup.sh
#function:LAMP_BACK
#author:paulyan
#date:2014.04.27
DATE=`date +%Y%m%d_%H%M%S`
MYSQL_FILE_NAME=/root/mysql_back_$DATE.sql
MYSQL_USERNAME=username
MYSQL_PASSWORD=password
WORDPRESS_FILE_NAME=/root/wordpress_back_$DATE.tar.gz
#backup mysql and wordpress
mysqldump -u$MYSQL_USERNAME -p$MYSQL_PASSWORD wordpress > $MYSQL_FILE_NAME
tar -zcvf $WORDPRESS_FILE_NAME /var/www /var/log
#scp to bangbang'host
scp -P10086 $MYSQL_FILE_NAME $WORDPRESS_FILE_NAME username@IP:/home/paul/ALIYUN_BACKUP
#mail2me
(echo "Subject: Report from the ALIYUN";echo "The backup is finished !";echo $DATE) | sendmail -f ALI@root.com -t abc@123.com
#delete files
rm -rf mysql_back* wordpress_back*
7.在cron中加入执行backup.sh计划,每天凌晨一点执行备份,打开/etc/crontab添加:
0 1 * * * root /root/backup.sh
遇到的几个问题(坑):
如果ssh端口不是默认的22,需要在scp命令后跟参数 -P端口,此参数要跟着scp之后,不可在备份主机IP之后
注意QQ邮箱是接受不到sendmail发送的邮件的,网易邮箱可以
系统中可能默认没有安装cron服务,需要手动安装,debian和centos的软件包不一样,一个是cron一个是crontabs
shell脚本中定义变量时,单引号''和反引号``是不一样的,如果要定义可执行程序的变量一定要用反引号