Mac上使用rsync+iNotify实现本地文件和服务器实时同步 - Lidong's site 李东的博客

Mac上使用rsync+iNotify实现本地文件和服务器实时同步

在web开发的过程中,肯定不能一直在本地开发,很多时候要用到服务器的环境,所以要经常上传文件到服务器,而且也不可能用vim在服务器上直接修改。所以需要一个很好,很高效的方法实现本地文件实时同步到服务器端的文件。
经过一番google后这里决定用rsync+iNotify来实现。
rsync是一个很搞笑的文件传输工具。mac下应该有预装,可以在终端中输入rsync命令来看一些帮助和参数。主要由几个特征:
1.增量 – 强大的原因,对比文件差异,然后只传输差异部分
2.压缩 – 强大的原因,怎么实现秒传?传得越少,速度越快
3.黑名单 – 某些目录和文件是永远不用传的
4.安全 – 有权限校验,可以走ssh通道,根据主机、或者用户名
5.连续 – 不是一次只传一个文件
如果使用ssh作为传输通道的话,当然,要配置公私钥来喝服务器端验证,那么在终端中输入命令:

rsync --rsh=ssh -avz SRC user@host:/path/to/DST
即可,这里:--rsh=ssh是配置使用ssh的参数,-avz是最常用的参数,SRC是本地的文件目录,user@host:/path/to/DST是对应服务器的路径,这时就应该有log显示同步成功。
那么这时还要监测文件系统的变化,经一番搜索用mac中的iNotyfy来实现,stackoverflow上有篇帖子可以解决问题,在~/Library/LaunchAgents/rsync.plist文件中输入:
<?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
 <plist version="1.0">
 <dict>
   <key>Label</key>
   <string>logger</string>
   <key>ProgramArguments</key>
   <array>
     <string>/usr/bin/rsync</string>
     <string>-avz</string>
     <string>--rsh=ssh</string>
     <string>SRC</string>
     <string>user@host:/path/to/DST</string>
   </array>
   <key>WatchPaths</key>
   <array>
     <string>/path/to/SRC/</string>
   </array>
 </dict>
 </plist>
这里改成自己的相关配置,然后执行:
launchctl load ~/Library/LaunchAgents/rsync.plist
这时,就实现了本地目录下有变化是就自动同步到服务器上的相应的文件了。

LEAVE A COMMENT

Name:*

E-Mail:*

Website:

Message:*

Required fields are marked *

Post Comment