使用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

保存,大功告成。

Last modification:February 2, 2019
If you think my article is useful to you, please feel free to appreciate