unison实现文件双向同步

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无法判断以那个为准

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值