VPS之数据库与网站文件全智能化备份

作者:疯疯  发表在www.ssbbcc.com  于2012年07月05日

网上的VPS自动定时备份数据库脚本很多,但是都是你copy我的文章,我copy你的文章,copy来copy去都组成一篇文章,至于有没有具体实践过,就不得而知了。

本人参考22VK.com的文章,再加上网上的文章,经本人与22vk.com的实践,组合以下的文章。

方法如下:
一,安装所需程序 (centos下的命令,以下类同)。
yum install mutt
二,设置mutt发信参数
$ vi ~/.muttrc
写入下面的内容
set envelope_from=yes
set from=你的邮箱完整地址
set realname=”datebak”
set use_from=yes
然后设置要接收邮件的Gmail或者其它的邮箱,把你的邮箱完整地址加入白名单。
三,设置脚本
注意这几个目录
/etc/cron.hourly
/etc/cron.daily
/etc/cron.weekly
/etc/cron.monthly
这些目录下的文件可以分别每小时,每天,每周,每月自动执行一次。如果是把脚本程序放置在上面的目录里,最好把权限设置为0700。
设置更复杂的执行条件可以使用crontab -e命令。详情请看下文。
以每天执行为例
$ vi /etc/cron.daily/datebak.sh
写入下面的内容
#!/bin/bash
# SETTING
TOEMAIL=”你的邮箱完整地址”;
COMMENT=’database backup’
DIR=’wordpress’
# END SETTING
TMP=’/tmp/dabak/’${DIR}
ATTTMP=’/tmp/dabakatt/’${DIR}
rm -rf $TMP
mkdir -p $TMP
cd $TMP
# Put files what you want to backup to $TMP
你要操作的命令
# Don’t change anything below
YYYYMMDD=`date +%Y%m%d`
SUBJECT=’DiaBak_of_’${DIR}’_’${YYYYMMDD};
rm -rf $ATTTMP
mkdir -p $ATTTMP
cd $ATTTMP
tar zcPf backup.tar.gz $TMP
rm -rf $TMP
split -b 20m -a 3 -d backup.tar.gz ${SUBJECT}.part
rm -f backup.tar.gz
for file in *
do
echo $COMMENT | mutt -a $file -s $SUBJECT $TOEMAIL
sleep 30s
done
rm -rf $ATTTMP

需要更改的地方:
TOEMAIL为接收邮件的邮箱地址。

# Put files what you want to backup to $TMP,这一行下面的命令根据需要自己补充,比如备份数据库可以把SQL文件导出到$TMP目录,备份文件可以复制文件到$TMP目录。

四,导出数据库的命令。 这儿是关键,网上好多的命令都是无法实现的,当然跟系统也有关系,我是以CENTOS为准

1.备份单个数据库

/usr/local/mysql/bin/mysqldump -u root -p123456 –lock-all-tables ssbbcc > ssbbcc.sql

以此类推,可以备份多个表。

五,重新组合备份的文件

Linux下

$ cat daBak* > bak.tar.gz

windows下

copy daBak_of_testfile_20100421.part001/b+daBak_of_testfile_20100421.part002/b bak.tar.gz

注意分卷后面会有三位数字,cat命令会按这些数字的顺序重新组合文件,所以数字不能乱。copy命令同理,注意数字顺序。
以上是我目前在用的备份方式。
以下是朋友推荐的方式:
把datebak.sh里的内容改成以下:
mysqldump -uroot -p123456 –databases ssbbcccom> /home/wwwroot/allbackup/ssbbcc.sql
echo “主题:数据库备份” | mutt -s “$(date +”%Y%m%d”)ssbbcc.COM Database” -a /home/wwwroot/allbackup/ssbbcc.sql “$(date +%Y%m%d)Backup database” ssbbcc@ssbbcc.com
sleep 40s

你如果要用这个命令,需修改对应的SQL的密码,数据库名,与邮箱地址就行了。
更加霸气的方法如下,要以实现不同的数据库发给不同的邮箱。
具体实施步骤:

第一步:yum install sendmail mutt #发送邮件需要mutt程序支持
第二步:vi /home/backup.sh #新建一个backup.sh的定时文件,文件内容如下
mysqldump -uroot -p123456 –databases sb> /home/wwwroot/allbackup/sb.sql
echo “主题:数据库备份” | mutt -s “$(date +”%Y%m%d”)sb.COM Database” -a /home/wwwroot/allbackup/sb.sql “$(date +%Y%m%d)Backup database” sb@qq.com
sleep 40s

mysqldump -uroot -p123456 –databases bs> /home/wwwroot/allbackup/bs.sql
echo “主题:数据库备份” | mutt -s “$(date +”%Y%m%d”)bs.COM Database” -a /home/wwwroot/allbackup/bs.sql “$(date +%Y%m%d)Backup database” bs@qq.com
sleep 40s

第三步:chmod +x /home/backup.sh #赋予backup.sh文件执行权限
第四步:crontab –e #新建定时任务
0 */6 * * * /home/backup.sh #定时每隔六小时自动执行备份
以上都是讲到数据库的备份,现在发点干货,讲讲WordPress的增量备份,这个增量主要指UPLOAD的文件夹,其它的主题之类的修改,不算在内。方式是如下:
在数据库备份的命令之后加上下面的代码
MM=`date “+%m”`
YYYY=`date “+%Y”`
tar zcvf ssbbcc.tar.gz /home/wwwroot/ssbbcc.com/wp-content/uploads/${YYYY}/${MM}
以此类推,只要你知道你的网站的文件增加在哪里,这样就可以实现增量备份。
这样只要文章有更新,你收到的备份文件,天天更新,VPS挂掉了,也可以快速度恢复。最多,最多损失一天的工作量,当然,如果你把备份频率提高,损失得就更少了。

备份的结果

备份的结果

分类: 数码、网络、网站

相关标签: , , , , , ,

原创文章如转载,请注明:转载自 我们都很疯 [http://www.ssbbcc.com]

相关日志


感谢你发表评论 www.ssbbcc.com 鼓励全人类学习象形字



谷哥赞助

老年历

免责声明

本站资讯大多来源于互联网,如涉及您的版权请留言或者邮件root#ssbbcc.com告知。私人文章请务必要登陆阅读。
拒绝任何人以任何形式在本站发表与中华人民共和国法律相抵触的言论!
违法信息举报请QQ676212374或者邮件root#ssbbcc.com联系

疯子亲友团