基于Dropbox实现的VPS自动备份

前言

自从购买了一个VPS之后,一直琢磨着如何对其中的数据进行备份。

手动跟本地备份的方法很多,如利用WinSCP的同步功能,但问题在于VPS主机在美国,和本地间的数据传输速度太低了,还有一个问题就是手动备份,总是有点麻烦,有时还会忘记。

于是就想起利用Dropbox网盘来自动备份。Dropbox免费空间只有2G多点,不过对我已经足够了。而且实在不够,还可以多申请几个嘛,呵呵。Dropbox主机也在美国,因此和VPS间的数据传输速度很快。

虽然Dropbox提供多平台客户端,但我的VPS配置比较低,而且很多库都没有安装。在网上搜了一下,利用Dropbox进行VPS备份的几种方法,我都用不起来。

主要看了两种方法:

[1] 利用Dropbox官网提供的一个叫dbmakefilelib.py的脚本进行,但该脚本似乎已经被Dropbox官网删除了,下载不了,具体可参见《在VPS中安装Dropbox实现网站的实时备份》

[2] 利用Dropbox官网提供的服务器版的客户端,生成一个链接地址,然后需要在VPS上用浏览器打开这个地址,在网页上输入用户名密码完成账户绑定。但由于大多VPS上没有图形界面,只能使用基于文本的浏览器,如w3m,有人说使用这种方法成功了,详细可参见《同步 VPS 数据到 Dropbox》。但这种方法在我的VPS上没有尝试成功。

注:我的VPS运行的是CentOS 6.0系统

解决办法

经过不懈的搜索,我在www.andreafabrizi.it这个网站上找到了一个叫dropbox_uploader.sh的脚本,该脚本可以实现Dropbox上的单个文件的上传/下载。基于该bash脚本我写了一个名叫dropbox_autosync.pl的perl脚本。该脚本目前可以实现本地目录的自动备份。安装方法如下:

[1] 下载以下两个脚本,并将其放至/usr/bin/或其它本地可执行程序路径下,添加可执行权限:chmod +x dropbox_uploader.sh dropbox_autosync.pl

dropbox_uploader.sh

https://github.com/andreafabrizi/Dropbox-Uploader

dropbox_autosync.pl

http://ncturtle.vicp.cc/downloads/dropbox_autosync.pl

[2] 执行dropbox_uploader.sh,按照提示完成Dropbox账户绑定。

[3] 执行dropbox_autosync.pl,可以看到使用方法:

Usage:
    dropbox_autosync.pl [--backup|restore|sync] [--logon|logoff] [-o omit-list] local-folder remote-folder
--backup|restore|sync
    backup mode, make the remote folder same with the local; restore mode, make the local same with the remote; sync mode, make the local and the remote same with each other.
-o omit-list   
    omit some folders and files during operation. omit-list is a text file. Each line stands for a folder or file to omit,like /sub1/sub2 or /sub/sub/file1.

[4] 借助cron守护进程自动执行备份操作,命令行输入: crontab -e,打开当前用户的crontab文件进行编辑,添加如下行(注意当前用户对待备份的目录有读写权限):

#backup every six hours at *:12

12 */6 * * * dropbox_autosync.pl --backup -o /YOU_PATH/omit.list YOU_LOCAL_DIR YOUR_REMOTE_DIR

注:man –5 crontab可以获得crontab更多使用说明

有待改进

[1] 本地删除操作不能同步到远程Dropbox服务器上

[2] 实现restore/sync模式

[3] 添加多进程机制,加快上传速度

[4] …

posted @ 2012-03-10 14:12  ncturtle  阅读(390)  评论(1编辑  收藏  举报