unison实现文件双向同步
2015-11-11 11:46
507 查看
unison简介
Unison是一款跨windows/linux/MAC OS平台的文件同步工具,不仅支持本地对本地同步,也支持通过SSH、RSH和Socket等网络协议与远程主机进行同步。最主要的是,Unison支持双向同步操作,即任何一端数据发生改变,都会更新到对端;但是,unison无法实现实时双向同步。与rsync区别:rsync同步是单向的,客户端同步服务器端,而客户端进行文件的删除、修改等操作无法同步到服务端。
unison特性
1.支持跨平台同步2.双向同步,自动更新两份副本中没有冲突的部分,有冲突的部分由用户选择更新策略
3.支持增量同步,每次同步完成后会记录文件状态,下次同步时,以上次的状态为起点开始同步
unison安装
[root@test src]# mkdir -p /usr/local/src/unison [root@test src]# cd /usr/local/src/unison #安装ocaml编译器 [root@test src]# yum install ctags-etags -y [root@test src]# wget http://caml.inria.fr/pub/distrib/ocaml-4.02/ocaml-4.02.3.tar.gz [root@test src]# tar -zxvf ocaml-4.02.3.tar.gz [root@test src]# cd ocaml-4.02.3 [root@test src]# ./configure [root@test src]# make world opt [root@test src]# make install #安装unison [root@test src]# wget http://www.seas.upenn.edu/~bcpierce/unison//download/releases/stable/unison-2.48.3.tar.gz [root@test src]# tar -zxvf unison-2.48.3.tar.gz [root@test src]# cd unison-2.48.3 [root@test src]# make UISTYLE=text THREADS=true [root@test src]# make -p /root/bin [root@test src]# mkdir install [root@test src]# mkdir -p /usr/local/unison [root@test src]# cp /root/bin/unison /usr/local/unison
unison使用说明
unison示例
1.同步本地的两个文件unison /test1 /test2
执行命令后会有相关提示,询问是否执行更新操作,输入“y”后更新。
2.将本地的目录/test1同步到远程主机上
unison /test1 ssh://10.10.10.56//test2
友情提示:
1.异地同步双向同步需要两台主机配置互相ssh无密码登录,在此就不做演示。
2.在与远程主机同步时,我们执行同步命令后出现以下报错:
Contacting server... bash: unison: command not found Fatal error: Lost connection with the server
这是由于我们在编译安装unison后,可执行文件在/root/bin下,在进行远程同步时需要指定其路径,如:
unison /test1 ssh://10.10.10.56//test2 -servercmd /root/bin/unison 或 unison /test1 ssh://10.10.10.56//test2 -servercmd /usr/local/unison/unison
否则会出现上面的错误。而在本次安装过程中,我们的unison虽copy在/usr/local/unison下,但直接执行unison命令使用的是/root/bin/unison。
unison参数
-testserver测试连通性,不执行具体操作。如unison /test1 ssh://10.10.10.56//test2 -testserver - servercmd /usr/local/unison/unison
-servercmd
通知unison的具体执行路径
-auton
接受缺省的动作,然后等待用户确认是否执行
-batch
全自动模式,接受缺省动作,并执行。
-ignore xxx
增加 xxx 到忽略列表中
-path xxx
只同步 -path 参数指定的子目录以及文件,而非整个目录。-path 可以多次出现
-follow xxx
是否支持对符号连接指向内容的同步
owner = true (保持同步过来的文件属主)
group = true (保持同步过来的文件组信息)
perms = -1 (保持同步过来的文件读写权限)
repeat = 1 (间隔1秒后,开始新的一次同步检查)
retry = 3 (失败重试)
sshargs = -C (使用ssh的压缩传输方式)
xferbycopying = true
-immutable xxx
不变目录,扫描时可以忽略
-silent
安静模式
-times
同步修改时间
true表示同步时通过文件的创建时间来比较两地文件,若为false,则比较两地文件的内容。建议true
以上只是部分常用参数,还有其他参数需要我们具体了解。
unison配置文件
unison除了可以使用命令参数外,也可以调用配置文件的方式使用。配置文件在/root/.unison下,缺省的配置文件为: “default.prf”。
执行方式如:
unison
unison会到在 ~/.unison 目录下查找 “.prf” 配置文件。
如果不带参数执行 unison,则查找 “default.prf” 文件
[root@test unison]# vim /root/.unison/test.prf root = /test1 #要同步的文件夹 root = ssh://10.10.10.56//test2 #要同步的文件夹 #force = /test1 #以本地文件为标准,将该目录同步到远程主机,开启后则变成单项同步 path = web1 path = web2 #只同步/test1目录下的web1和web2目录 ignore = tmp #忽略同步/test1/tmp目录 #prefer = ssh://10.10.10.56//test2 batch = true #全自动模式,接受并执行默认动作 maxthreads = 300 #同步时最大线程数 repeat = 1 #间隔一秒后,开始新一次同步检查 retry = 3 #重试次数 owner = true group = true perms = -1 #保持同步过来读写权限 sshargs = -C #使用ssh压缩传输方式 perms = -1 fastcheck = false #true表示同步时通过文件的创建时间来比较两地文件,若为false,则比较两地文件的内容。建议true rsync = false #debug = verbose xferbycopying = true confirmbigdel = false #默认值是true,表示当需要同步的两个目录一个为空时,unison将停止,这里设置为false,即便为空unison也不会停止运转 log = true logfile = /tmp/unison.log
总结
经过以上介绍,我们大体知道了unison的使用方法。它的双向同步的确给我们带来了极大的方便,但同时也有一个缺点:对于一个文件在两个同步文件夹中都被修改时,unison是不会去同步的,因为unison无法判断以那个为准。相关文章推荐
- OA项目数据加载之后无法调用resultList_loaded方法
- CocoaPods 安装和应用
- dns 服务不稳定,解析有问题时,解决办法
- symfony安装使用
- 【APUE】Chapter4 File and Directories
- replace()的使用方法
- Java RandomAccessFile用法
- Objective-C 程序设计 第十章
- Java多线程笔记
- 查看当前系统的glibc版本
- 在Maven中Spring的基础配置
- HTML5上传图片预览
- [H5-Compress-Image]利用canvas实现 javascript 图片压缩处理_基于requirejs模块化的代码实现
- xml提示失效的一个奇葩原因
- android自带图片资源图标一览,android.R.drawable
- 黑马程序员——其他类
- Cloud Design Pattern - Leader Election Pattern(领导选拔模式)
- 搜狐邮箱收取
- static深入详细解释
- spring mvc静态资源文件的引用