定时备份Linux VPS上的网站到Dropbox

Dropbox

前两天,我的美国VPS再一次出问题,系统无法重启,跟那边说了,没回应,只好自行重装系统。悲催的是,数据只能备份到11月7日,唉,都是没备份的惹祸。为了防止这样的事情再一次发生,我利用国外的云盘Dropbox进行数据的定时备份,这样再也不担心什么了。下面是相关的教程,感谢下小旭旭,因为他解答了我不少问题。

第一步,登陆VPS,然后利用wget下载dropbox安装包(切记:在root目录下)

wget -O dropbox.tar.gz http://www.dropbox.com/download?plat=lnx.x86 #32位系统
wget -O dropbox.tar.gz http://www.dropbox.com/download?plat=lnx.x86_64 #64位系统

第二步,解压安装包,运行安装

tar zxvf dropbox.tar.gz #解压

.dropbox-dist/dropboxd #运行

第三步,运行后会出现一段网址,我们复制黏贴到浏览器中,是需要我们来绑定DropBox账户的

如果你还没有dropbox账户就需要先注册(我要注册Dropbox)一个了,默认账户送2G存储空间,可以进行任务升级,一般2G也够用。(有些地区是打不开网站的,需要越墙)。绑定成功在SSH中会看到成功字样,回车就OK。

第四步,建立软连接

新建个网站备份目录,设置755权限,并用软连接指向

cd ~/Dropbox

ln -s /home/backup   # (/home/backup )是网站备份目录

第五步,同步软连接数据

.dropbox-dist/dropboxd

在root目录下运行上述的命令会同步文件在我们看到的dropbox浏览器界面客户端

第六步,定时进行同步数据

因为运行备份定时会占用不小的内存,也没有必要及时同步,我们可以设置定时备份。

killall dropbox #关闭守护进程

在root目录下放置 backup.sh脚本文件,备份网站和数据库

chmod +x backup.sh #给予权限
crontab -e #赋予周期
0 2 * * * sh /root/backup.sh start
早上2点进行并自动退出

backup.sh代码,压缩网站文件和数据库,定时删除3天前的文件

#/bin/bash
mysqldump --user=root --password='数据库密码' --databases 数据库名| gzip > /home/backup/数据库名-`date +%Y%m%d%H%M`.sql.gz
tar -zcvf /home/backup/网站域名-`date +%Y%m%d%H%M`.tar.gz /home/wwwroot/网站目录
find /home/backup -type f -mtime +3 -exec rm -f '{}' \;

在root目录下放置 dropbox.sh脚本文件,同步文件和数据库

chmod +x dropbox.sh #给予权限
crontab -e #赋予周期
0 3 * * * sh /root/dropbox.sh start
0 4 * * * sh /root/dropbox.sh stop
早上3点开始,4点结束

dropbox.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

复制脚本代码的时候,请使用UltraEdit编辑器,把文件格式转换为unix(流程为:文件-转换-DOS到UNIX),否则会出错。

脚本代码是放在root下面的,启动停止的命令:

备份命令
./backup.sh start

同步的代码为
./dropbox.sh start
./dropbox.sh stop

因为dropbox的相关命令在dropbox.sh里面

删除卸载dropbox方法:

killall dropbox

rm -rf .dropbox .dropbox-dist Dropbox dropbox.tar.gz dbmakefakelib.py dbreadconfig.py

好了,教程到这里结束了,大家慢慢折腾。

定时备份Linux VPS上的网站到Dropbox》有6个想法

  1. 小怪物

    感谢博主,用上了,测试之后貌似只备份下来了网站目录,数据库没有打包备份,不知道是什么问题。

    回复
  2. 小怪物

    文中backup.sh数据库那段mysql目录前少写了backup目录。

    再次测试备份成功,感谢博主的教程

    回复
    1. 灵尘子 文章作者

      有用就好,我修改好了代码。其实现在用的备份方法比这个更简单,不用安装linux客户端,采用脚本上传,改日分享出来。

      回复

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注