在CentOS 5上部署Dropbox Daemon,监控其同步状态并退出

由于众所周知的原因,如果你的服务器在国内 下面是必须做的

nano /etc/hosts

加入

174.36.30.71 www.dropbox.com
174.36.30.71 dropbox.com
174.36.30.71 dl.getdropbox.com
174.36.30.71 getdropbox.com

然后根据你的需要选择x86或者x64构架

wget https://www.getdropbox.com/download?plat=lnx.x86
or
wget https://www.getdropbox.com/download?plat=lnx.x86_64

然后 tar zxvf解压,得到.dropbox-dist目录,mv移动到~
运行

~/.dropbox-dist/dropboxd

过一会屏幕输出一串网址,复制下来,到本机浏览器中输入访问,然后输入你的dropbox密码,完成机器登录。

这时候,这个dropboxd就可以按ctrl+c终止了

接下来安装命令行界面

wget http://www.dropbox.com/download?dl=packages/dropbox.py

要求python = 2.6才可以运行,否则会报错。
然后chmod +x该文件就可以了。
这个命令行界面可以实现Daemon的启动,停止,状态查询等

CentOS 5上的python还是一如既往的古老,python2.4,安装activePython绿色包即可解决问题

https://www.activestate.com/activepython/downloads 下载ActivePython 2.6或以上版本,选择Linux (x86)或64下载解包,运行./install.sh 安装,默认是装到/opt/ActivePython-2.6,你可以自定义,也可回车默认
然后修改刚才下载的dropbox.py,把第一行的

#!/usr/bin/python

换成

/opt/ActivePython-2.6/bin/python

即可执行。
最后别忘记开启Dropbox Daemon

./dropbox.py start

可以为这个密令做个别名或者软连接

dropbox默认有个局域网同步功能,Dropbox 的局域网同步依旧需要联网,Dropbox 会自动检测网络并同步,如检测到局域网内,文件的同步将不通过服务器中转,从而大大提高同步速度。这个功能会不停的发广播包,如要关闭这个功能,需要另外一个python文件,同样的,如果你的python版本过低,比如centos,那就还是把第一行换成activePython的路径

./dropboxp2p.py -d

就可以禁止局域网同步功能。如要开启,参数-d换成-e即可

若想做成debian服务。参看此教程 http://wiki.dropbox.com/TipsAndTricks/UbuntuServerInstall


默认dropbox的设置保存在~.dropbox/dropbox.db

这个是个sqlLite数据库

可以用sqlLite 查看

sqlite3 ~.dropbox/dropbox.db
.dump config

可以看见许多配置信息
其中的host_id就是和帐号的关系,但是这个是假的,要重新关联,解码这个FakeHostID后减去第一个V才是真ID,访问
https://www.dropbox.com/cli_link?host_id=HOSTID
即可
解码方式

echo FakeHostID | bas64 -di|sed -n 1p|cut -c2-

得到的就是真正的
如果闲麻烦,直接删掉这个db文件从来也可以啊。


另外,Dropbox的运行不是一般的占内存,如果你开启它 时候,没有文件要同步,他会很安静的,要是有文件要同步,内存立刻上升到134M,同步完了也不释放,非常讨厌。
下面这个cron可以在凌晨4点开启dropbox,然后每隔1min检查一次同步状态,同步完了就立刻退出dropbox,若到凌晨6点还没同步完,立刻强制停止dropbox

[bash]0 4 * * * /root/Dropbox/bin/dropbox.py start
1-59 4-5 * * * /root/Dropbox/bin/dropbox.py status |grep -i "idle" && /root/Dropbox/bin/dropbox.py stop ##check dropbox status and stop it
0 6 * * * /root/Dropbox/bin/dropbox.py stop[/bash]
但是上面的cron在dropbox结束后还会继续查询dropbox的运行状态,非常不合理,所以我写了一个脚本来解决这个问题

可以换成下面的shell脚本,然后他会每隔1min检查一次同步状态,同步完了就立刻退出dropbox。

[bash]#!/bin/bash
#dropbox.watch
#dropbox watcher by ihipop.info
#start dropbox to wait until it finished sync
#by [email protected]
########CFG##########
i=0
delay=1
dropcmd=/root/Dropbox/bin/dropbox.py
#######END###########
[ ! -x "$dropcmd" ] && echo -e "hey! the dropbox.py is not executeable,\n quiting..." && exit 1
$dropcmd stop >/dev/null
$dropcmd start >/dev/null
sleep 2s
while [ $i = 0 ]
do
$dropcmd status |grep -iE "idle|isn't running" && i=1
#echo $i
case $i in
0) sleep ${delay}m;;
1) $dropcmd stop;;
esac
done
exit 0
[/bash]

cron这样写

[bash]0 4 * * * /root/Dropbox/bin/dropbox.watch
#start & check dropbox status and stop it when finished sync
0 6 * * * /root/Dropbox/bin/dropbox.py stop
#force to stop it at 6:00 am
[/bash]


最后贴一下我的Dropbox注册链接,点此注册可以为我增加空间,你们也会额外获得250MB的空间

谢谢大家 https://www.dropbox.com/referrals/NTMyNDEyMDI5

Author Info :
  • From:在CentOS 5上部署Dropbox Daemon,监控其同步状态并退出
  • URL:https://blog.ihipop.com/2010/09/1625.html
  • Please Reserve This Link,Thanks!
  • 《在CentOS 5上部署Dropbox Daemon,监控其同步状态并退出》上有1条评论

    1. 你好,兄弟。能帮我传份dropboxp2p.py吗,网站上下不到了。

    发表回复

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