使用Dropbox备份网站数据是一种经济同时又保险的办法,它能够避免你的VPS或者服务器因为硬件损坏而导致数据付诸东流的悲剧。
网上的使用Dropbox同步VPS上网站数据的教程很多,但没有找到自己用的比较顺手的。于是多方参考,把自己的方法与大家共享。
此方法非网页上传,而是直接和dropbox同步,对于小内存VPS,推荐大家定时开闭Dropbox进程,如果想实时同步就一直守护dropbox进程,会占用一定资源。
下面就开始了。
1,注册Dropbox帐号
点击这里注册一个dropbox帐号,注册成功后每人会获得一个2G大小的储存空间,看起来很小,但你可以通过后期的推荐注册获得最多16GB的储存。2G对一般的网站来说,也足够用了。
注册之后在你的电脑上安装Dropbox客户端,这样你的dropbox数据就可以同步到你的电脑上了。
2,在你的Linux VPS上安装dropbox
如果你的VPS操作系统是32位的,那么执行:
wget -O dropbox.tar.gz http://www.dropbox.com/download?plat=lnx.x86
如果是64位,则执行:
wget -O dropbox.tar.gz http://www.dropbox.com/download?plat=lnx.x86_64
然后将文件解压:
tar xzvf dropbox.tar.gz
第一次运行生成host_id
~/.dropbox-dist/dropboxd &
这时你的VPS上会出现“Please visit https://www.dropbox.com/cli_link?host_id=XXXXXXXXXXXXXXXX&cl=en_US to link this machine.”的字样,复制那个地址到你本机电脑的浏览器地址栏进入,这时dropbox会要求你输入你的帐号密码,输入成功之后,你的VPS就和dropbox连接成功了。
3,建立连接备份网站
正式开始同步你的网站,通过ln软链接你所有要备份的目录,例如:
cd ~/Dropbox
ln -s /home/wwwroot/html
ln -s /home/wwwroot/htdocs
...
开始运行同步,测试发现,同步到Dropbox的速度是非常快的,罗伊1.9G的文件,同步到dropbox也才用了十分钟左右的时间。
~/.dropbox-dist/dropboxd &
为了节省资源,可以不使用实时同步,只定时打开同步一天的文件再关掉以节省资源.
先关掉同步:
killall dropbox
编写定时同步脚本:
vi backup.sh
代码如下:
#!/bin/sh
start() {
echo starting dropbox
/root/.dropbox-dist/dropboxd &
}
stop() {
echo stoping dropbox
pkill dropbox
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
esac
定时运行和关闭:
chmod +x backup.sh
crontab -e
每天0点开始同步,1点关闭同步.
其实一般每天更新数据不多不用打开这么长时间,罗伊自己用的一天只打开20分钟,这个根据各人每天更新的数据量自己来设置。
0 0 * * * sh /root/backup.sh restart
0 1 * * * sh /root/backup.sh stop
备份网站和数据库的脚本
虽然dropbox可以直接同步你的网站文件过去,但是有时候你可能需要的是数据库文件,或者是一个压缩包,该怎么办呢?
罗伊自己mod了一个脚本,供大家参考:
首先得安装发信组件
yum install sendmail mutt
接下来创建脚本:
vi tarballbackup.sh
代码如下:
#!/bin/bash
MYSQL_USER=root #mysql username
MYSQL_PASS=XXXXX #mysql password
MAIL_TO=yourname@yourdomain.com #email that backups sent to
WEB_DATA=/home/wwwroot/html #folder to backup#Define the names of backups
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 backups 3days ago
rm -rf /root/Dropbox/Data_$(date -d -3day +"%Y%m%d").tar.gz /root/Dropbox/Web_$(date -d -3day +"%Y%m%d").tar.gz
cd /root/Dropbox
#Export mysql files
for db in `/usr/local/mysql/bin/mysql -u$MYSQL_USER -p$MYSQL_PASS -B -N -e 'SHOW DATABASES' | xargs`; do
(/usr/local/mysql/bin/mysqldump -u$MYSQL_USER -p$MYSQL_PASS ${db} | gzip -9 - > ${db}.sql.gz)
done
#tar MySQL files as a ball
tar zcf /root/Dropbox/$DataBakName /root/Dropbox/*.sql.gz
rm -rf /root/Dropbox/*.sql.gz
#Send to email
echo "Tittle:Database backup" | mutt -a /root/Dropbox/$DataBakName -s "Content:Database backup" $MAIL_TO
#tar webbak
tar zcf /root/Dropbox/$WebBakName $WEB_DATA
仍然设置cron守护,每天0点执行:
crontab -e
添加
0 0 * * * sh /root/tarballbackup.sh
保存,大功告成。