星期二, 九月 18, 2012

用Dropbox备份VPS上的网站数据

用Dropbox做网站备份是一个老话题。基本思路就是把网站数据集中到用户目录下~/Dropbox目录内,然后通过Dropbox同步备份到服务器,为了减小资源占用,一般用cron脚本在用户量小时自动打开Dropbox,备份完成后再关闭。

除非特别指明,下面的操作不需要root权限,有底纹的文字为代码
1. 安装Dropbox
访问dropbox网站
https://www.dropbox.com/install?os=lnx
下载并安装dropbox,以普通用户安装时,程序会被安装到用户目录内~/.dropbox

2. 调整目录结构,把网站数据放到用户目录内
#创建日志文件
mkdir ~/log
#创建并进入Dropbox目录
mkdir ~/Dropbox
cd ~/Dropbox
# 创建db目录,用来放数据库备份
mkdir db
# 创建html目录,放网页文件
mkdir html
# 创建conf目录,放网站设置相关文件(建议把网站设置放到/etc/httpd/conf.d中的单独文件)
mkdir conf

3. 创建备份脚本文件,假设用户名为bob,网站数据库为bob_db
下载dropbox控制脚本程序
cd ~
wget http://www.dropbox.com/download?dl=packages/dropbox.py
chmod +x dropbox.py

备份开始文件backup_start.sh
#!/bin/sh
exec 2>&1
exec &>> ~/log/backup.log
date
echo "backup db daily..."
mysqldump --user bob -pdbpassword bob|gzip > /home/box/db/bak/dbbak_`date +'%m%d%Y'`.sql.gz
echo "removing backups older than 3 days..., DB has versioning system, no more backups needed"
find /home/box/db/bak/ -name "dbbak_*.sql.gz" -mtime +3 -exec rm {} \;
echo "starting dropbox..."
/home/bob/dropbox.py start
以上脚本自动备份mysql数据库内容到db目录下,删除超过3天的备份(这是安全的,因为dropbox默认有版本系统,可以找回删除文件,这样可以省空间),并启动dropbox进行备份

为了节省资源,备份完成后用脚本关闭dropbox,编写脚本backup_stop.sh
#!/bin/sh
exec 2>&1
exec &>> ~/log/backup.log
/home/bob/dropbox.py stop
date
echo "dropbox stoped."

4. 添加crontab项,需要root权限
0 3 * * * bob /bin/sh /home/bob/backup_start.sh
0 5 * * * bob /bin/sh /home/bob/backup_stop.sh
凌晨3:00-5:00访问量应该是比较小的

Dropbox备份网站比较方便,但是资源占用较大,不适合低端vps用。而且dropbox网站本身数据并不加密,所以对数据安全性敏感的谨慎使用。

没有评论: