使用Dropbox同步hexo文章

继之前那次失败的尝试之后(只在当时写的时候实验过几次,每次都以服务器卡死结束),后来在又多了几篇日志之后连generate也不能愉快的完成了。索性就在本地生成然后git push到服务器。

现在想更激进一些,git只管理日志以外的东西,比如hexo的升级,或模板的调整和日志源文件。而生成的静态文件直接通过Dropbox客户端同步到服务器。

话不多说。

以下为前提:

本地已安装hexo,和Dropbox客户端,并且客户端的同步目录已经选择到hexo的目录。
服务器已安装dropbox服务,及相应的用户。

Dropbox的同步目录选hexo根目录或public都行,只是在服务器的处理脚本那同步修改下就行了。

以下内容假设已在服务器添加dbox用户用于dropbox服务的同步处理。并且也已经设置了与dropbox账户的关联。

启动dropboxd

用dbox用户登录服务器。

然后,启动dropboxd进程。

~/dropbox-dist/dropboxd &

设置文件夹监测

先安装incron服务。
apt-get install incron
yum install incron
开机启动

安装sysv-rc-conf,用于管理服务的启动

apt-get install sysv-rc-conf
sysv-rc-conf incron on
sysv-rc-conf --list //用于查看所有服务的状态

创建监测服务

先修改下incron的编辑器

sudo vi /etc/incron.conf

在文件的最后一行,去掉editor = vi前的#,保存退出。

输入:

incrontab -e

如果当前登录的不是dbox用户,可以使用

incrontab -udbox -e

然后输入:

/home/dbox/Dropbox/yourfolder/ IN_ATTRIB,IN_MOVE /home/dbox/dbox.sh

第一个参数:用来接收Dropbox同步的文件夹

第二个参数:指监测的动作

第三个参数:处理脚本

监测的动作可以用:

IN_ACCESS,即文件被访问
IN_MODIFY,文件被 write
IN_ATTRIB,文件属性被修改,如 chmod、chown、touch 等
IN_CLOSE_WRITE,可写文件被 close
IN_CLOSE_NOWRITE,不可写文件被 close
IN_OPEN,文件被 open
IN_MOVED_FROM,文件被移走,如 mv
IN_MOVED_TO,文件被移来,如 mv、cp
IN_CREATE,创建新文件
IN_DELETE,文件被删除,如 rm
IN_DELETE_SELF,自删除,即一个可执行文件在执行时删除自己
IN_MOVE_SELF,自移动,即一个可执行文件在执行时移动自己
IN_UNMOUNT,宿主文件系统被 umount
IN_CLOSE,文件被关闭,等同于(IN_CLOSE_WRITE | IN_CLOSE_NOWRITE)
IN_MOVE,文件被移动,等同于(IN_MOVED_FROM | IN_MOVED_TO)
#上面所说的文件也包括目录。
处理同步后的文件的脚本
cd /home/dbox/
vi dbox.sh

cd /home/dbox/Dropbox/yoursite/
cp -R public/ /var/www/yoursite/

最后一句要注意看你本地同步了哪些内容,还要注意与网站的目录对应。

还要注意dbox.sh要有执行权限,和yoursite的写入权限。

至此,完成。