1.-testserver
测试连通性,连接到服务器即退出。示例:
$ unison / ssh://opensou1@bluehost/ -servercmd=~/bin/unison -testserver
如果服务器端 unison 可执行文件不在默认目录下,甚至没有 unison 命令(需要你编译一个上传到服务器),则需要使用 -servercmd 参数告诉要执行的服务器 unison 命令位置。
使用 -testserver 参数,则成功链接即退出,也不会去执行目录的比较等后续操作。
2.-servercmd
告诉 unison, 服务器端的 unison 命令是什么。
3.-auto
接受缺省的动作,然后等待用户确认是否执行。
4.-batch
batch mode, 全自动模式,接受缺省动作,并执行,无需人为干预。
5.-ignore xxx
同步时可以忽略的目录和路径,增加 xxx 到忽略列表中
6.-ignorecase [true|false|default]
是否忽略文件名大小写
7.-follow xxx
是否支持对符号连接指向内容的同步,会把软链接指向内容进行同步
8.-immutable xxx
指定不变化的目录,扫描时可以忽略该目录,不同步该目录
9.-path xxx 参数
只同步 -path 参数指定的子目录以及文件,而非整个目录。-path 在配置中可以多次出现,例如
unison /home/username ssh://remotehost//home/username
-path shared
-path pub
-path .netscape/bookmarks.html
10.其他参数
owner = true (保持同步过来的文件属主)
group = true (保持同步过来的文件组信息)
perms = -1 (保持同步过来的文件读写权限)
repeat = 1 (间隔1秒后,开始新的一次同步检查)
retry = 3 (失败重试)
sshargs = -C (使用ssh的压缩传输方式)
xferbycopying = true (这个是优化参数,默认true)
silent (安静模式 除了错误,不打印任何信息)
times (同步修改时间 同步mtime)
maxthreads n (指定文件同步的最大线程数)
rsync (默认是true,激活rsync传输模式)
log (记录unison运行日志,默认true)
logfile (日志输出到文件)
默认的配置文件夹位于~currentuser/.unison,即当前用户的home目录下,windows则位于C:\Documents and Settings\currentuser.unison
默认的配置文件名是default.prf
Archive文件也可以有多个,这个文件记录每次完成同步后每个文件的状态,可以在下次更新动作中更快判断文件是否应该更新,减少扫描时间。
运行这样的命令:
#unison exitgogo
Unison将默认读取~currentuser/.unison/exitgogo.prf文件里的配置信息.我的配置信息在/root/.unison/exitgogo.prf
因此我们可以根据上面参数的介绍,把所有的参数配置信息写入到一个.prf的文件中.
下面是我的一个web应用中两个文件夹同步的配置信息:
root = /sina/webdata
root = ssh://root@192.168.60.121//sina/webdata
#force =/sina/webdata
ignore = Path as/*
#prefer = ssh://root@192.168.60.121//sina/webdata
batch = true
#repeat = 1
#retry = 3
owner = true
group = true
perms = -1
fastcheck=false
rsync =false
#debug=verbose
sshargs = -C
xferbycopying = true
log = true
logfile = /root/.unison/sina_122.1547.log
说明如下:
两个root表示需要同步的文件夹
force表示以本地的/var/www/bbsnew文件夹为标准,将该目录同步到远端。注意,如果指定了force参数,那么unison就变成了单项同步了,也就是说会以force指定的文件夹为准进行同步.
Unison本身是可以双向同步的,但是要做到双向同步,就不要设置force参数,如果设置了force参数,就成了单项同步了,此时unison类似与sync.
Unison双向同步基本原理是:假如有A B两个文件夹,A文件夹把自己的改动同步到B,B文件夹也把自己的改动同步到A,最后A B两文件夹的内容相同,是 A B文件夹的合集.
Unison双向同步的一个缺点是,对于一个文件在两个同步文件夹中都被修改时,unison是不会去同步的,因为unison无法判断以那个为准.
ignore = Path表示忽略/sina/webdata下面的WEB-INF/tmp目录,即同步时不同步它。
batch = true,表示全自动模式,接受缺省动作,并执行
-fastcheck true表示同步时使用文件的创建时间来比较两地文件,如果这个选项为false,unison则将比较两地文件的内容.建议设置为true
log = true表示在终端输出运行信息。
logfile则指定了同时将输出写入log文件。
unison FAQ
如何在和远程服务器同步大量数据,上传一部分数据后,超时:
9% 559:15 ETARead from remote host bluehost: Connection reset by peer
Fatal error: Lost connection with the server
实际操作中,最好的方法是,第一次先把要上传的文件打成包,用 ftp 上传,然后展开到服务器,之后执行一次 unison 同步。