使用unison 同步文件
一、系统环境
192.168.1.2:
# uname -a Linux s2 2.6.18-128.el5 #1 SMP Wed Dec 17 11:42:39 EST 2008 i686 i686 i386 GNU/Linux
# lsb_release -a LSB Version: :core-3.1-ia32:core-3.1-noarch:graphics-3.1-ia32:graphics-3.1-noarch Distributor ID: #RedHatEnterpriseServer Description: #Red Hat Enterprise Linux Server release 5.3 (Tikanga) Release: 5.3 Codename: Tikanga
#已安装etags
192.168.1.23
# uname -a Linux localhost.localdomain 2.6.32-431.el6.x86_64 #1 SMP Fri Nov 22 03:15:09 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
[root@localhost 2.61]# lsb_release -a LSB Version: :base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch Distributor ID: CentOS Description: CentOS release 6.5 (Final) Release: 6.5 Codename: Final
#未安装etags,需用yum安装
已配置双机ssh信任。(略去配置过程)
二、安装ocaml-3.10.2
# tar zxvf ocaml-3.10.2.tar.gz # cd ocaml-3.10.2 ##需删除man1,不然会报错 # rm -rf /usr/local/man/man1 # ./configure # make word opt # make install
三、安装unison-2.32.52
# tar zxvf unison-2.32.52.tar.gz # cd unison-2.32.52 # make UISTYLE=text THREADS=true STATIC=true # cp unison /usr/local/bin/
四、测试连通性
# unison / ssh://192.168.1.23/ -testserver
五、示例
# vim /root/.unison/1.2_ftp.prf #2016-05-17 #back up /var/ftp/pub to 192.168.1.23:/home/databack/1.2_ftp root = /var/ftp/pub #root = /tmp/unison2 root = ssh://root@192.168.1.23//home/databack/1.2_ftp force = /var/ftp/pub #force = /tmp/unison2 batch = true maxthreads = 100 #repeat = 10 retry = 3 owner = true group = true times = true perms = -1 fastcheck = false rsync = false sshargs = -C xferbycopying = true confirmbigdel = false log = true logfile = /root/.unison/1.2_ftp.log
## 默认读取配置文件目录:/root/.unison或~/.unison
#/usr/local/bin/unison 1.2_ftp
六、unison参数详解(网络)
-testserver
测试连通性,连接到服务器即退出。示例:
# unison / ssh://root@192.168.1.23/ -servercmd=/usr/local/bin/unison -testserver
如果服务器端 unison 可执行文件不在默认目录下,甚至没有 unison 命令(需要你编译一个上传到服务器),则需要使用 -servercmd 参数告诉要执行的服务器 unison 命令位置。
使用 -testserver 参数,则成功链接即退出,也不会去执行目录的比较等后续操作。
-servercmd xxx
告诉 unison, 服务器端的 unison 命令是什么。参见上面的示例。
-auto
接受缺省的动作,然后等待用户确认是否执行。
-batch
batch mode, 全自动模式,接受缺省动作,并执行。
-ignore xxx
增加 xxx 到忽略列表中
-ignorecase [true|false|default]
是否忽略文件名大小写
-follow xxx
是否支持对符号连接指向内容的同步;
例如在我的 ~/.unison 的配置文件 default.prf 中有
# Unison preferences file follow = Path {unison_*} ignore = Path {WWWROOT/wiki_mirror} ignore = Name {,.}*{.~$lock} ignore = Name {a.out}
我将预进行同步的系统文件在 xxx/src 下分别作符号链接,如 unison_httpd.conf 指向 c:/program files/apache/.../httpd.conf。 同步时,"follow = Path {unison_*}" 配置(或参数)将跟踪符号链接指向的实际文件。 如果没有该设置,符号链接不予同步。
-immutable xxx
不变目录,扫描时即忽略
-silent
安静模式
-times
同步修改时间
-path xxx 参数
只同步 -path 参数指定的子目录以及文件,而非整个目录。例如
unison /home/username ssh://remotehost//home/username \ -path shared \ -path pub \ -path .netscape/bookmarks.html
原文地址:http://hunkz.blog.51cto.com/6157447/1775360