unison 安装使用

目录

##编译安装ocaml,unison依赖于ocaml

         ##编译安装unison,安装依赖性包

##其他一台主机和上面的配置相同,步骤省略

##配置免密登陆

##测试:

##配置文件启动运行:

####配置文件:

####配置文件解析:

##实时同步:


安装:

https://caml.inria.fr/pub/distrib/ocaml-4.02/

https://www.seas.upenn.edu/~bcpierce/unison//download/releases/

##编译安装ocaml,unison依赖于ocaml

[root@VOP-CS18 src]# yum -y install ctags-etags

[root@VOP-CS18 soft]# ll

-rw-r--r-- 1 root root 4211784 Aug 28 14:43 ocaml-4.02.0.tar.gz

-rw-r--r-- 1 root root 691251 Aug 28 14:41 unison-2.51.2.tar.gz

[root@VOP-CS18 soft]# tar xf ocaml-4.02.0.tar.gz -C /app

[root@VOP-CS18 soft]# pwd

/app/soft

[root@VOP-CS18 ocaml-4.02.0]# cd /app/ocaml-4.02.0/

[root@VOP-CS18 ocaml-4.02.0]# ./configure

** OCaml configuration completed successfully **(出现此行则显示成功)

[root@VOP-CS18 ocaml-4.02.0]# make world opt

[root@VOP-CS18 ocaml-4.02.0]# make install

##编译安装unison,安装依赖性包

[root@VOP-CS18 soft]# tar xf unison-2.51.2.tar.gz -C /usr/local/

解压出来的文件夹为src/,进入/usr/local/src下

[root@VOP-CS18 src]# make UISTYLE=text THREADS=true STATIC=true

    倘若出错,则运行 make UISTYLE=text,再出错:多执行几次,忽略这个错误。(UISTYLE=text THREADS=true STATIC=true 表示:使用命令方式,加入线程支持,以静态模式编译)

#[root@VOP-CS18 src]# cp ./unison /usr/local/bin

#倘若配置免密需要使用的不是root用户,或者说运行unison的不是root用户而是有sudo权限的其他用户,那么需要执行cp这条命令,且需要执行以下其中一种权限赋予方式使其具有可执行权限。还需要保证/usr/local/bin 在PATH路径之下。

             1.chown -R deployer: /usr/local/bin/unison ;chmod -R  755 /usr/local/bin/unison

             2.chmod -R o+x /usr/local/bin/unison

[root@VOP-CS18 src]# mkdir /root/bin

[root@VOP-CS18 src]# make install && echo "sucess"

##其他一台主机和上面的配置相同,步骤省略

##配置免密登陆

10.124.5.215:

ssh-keygen -t rsa

ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]

10.124.5.216免密登录10.124.5.215:

ssh-keygen -t rsa

ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]

##测试:

指定需要同步的文件夹的用户和组

[root@VOP-CS18 test_1]# chown -R deployer: /tmp/test_1/

执行以下命令:

[deployer@VOP-CS18test_1]# unison -batch -servercmd=/usr/local/bin/unison /tmp/test_1 ssh://[email protected]//tmp/test_1

需要指定unison的路径,否则它会到/root/bin/unison寻找

##配置文件启动运行:

        尽管可以完全通过命令行的方式来指定unison运行所需要的参数,但我还是推荐使用配置文件来进行配置使用unison,原因很简单,看配置文件比看命令行容易理解,而且可管理性更强。

    默认的配置文件夹位于~/.unison,即当前用户的home目录下,windows则位于C:Documents and Settingscurrentuser.unison,默认的配置文件名是default.prf

         deployer用户家目录下的/home/deployer/.unison/default.prf 是默认的配置文件。

         两端的配置文件只需要在其中一端配置就可以实现双向同步。

[deployer@VOP-CS18 .unison]$ unison

        直接执行unison ,它读取该用户的家目录下的.unison下寻找default.prf文件。

        如果将default.prf 改成了config.prf ,那我们同步时需要执行:unison config

####配置文件:

root = /tmp/test_1

root = ssh://[email protected]//tmp/test_1

#force =/tmp/test_1

servercmd=/usr/local/bin/unison

#ignore =/tmp/test_1/a

batch = true

#repeat = 1

#retry = 3

owner = true

group = true

perms = -1

#fastcheck = false

#rsync = false

sshargs = -C

#xferbycopying = true

confirmbigdel=false

log = true

logfile = /home/deployer/.unison/unison.log

####配置文件解析:

1.两个root表示需要同步的文件夹。

2.force表示以本地的/tmp/test_1文件夹为标准,将该目录同步到远端,开启后则变成单项同步

3.ignore = Path表示忽略/tmp/test_1/a目录,即同步时不同步它。

4. batch=true 表示全自动模式,接受并执行默认动作

5.log = true表示在终端输出运行信息。

6.logfile则指定了同时将输出写入log文件。

7.owner = true //保持同步过来的文件属主 

8.group = true //保持同步过来的文件组信息 

9.perms = -1 //保持同步过来的文件读写权限 

10.repeat = 1 //间隔1秒后,开始新的一次同步检查 

11.retry = 3 //失败重试 

12.sshargs = -C //使用ssh的压缩传输方式 

fastcheck true 表示同步时仅通过文件的创建时间来比较,如果选项为false,Unison则将比较两地文件的内容。 

auto //接受缺省的动作,然后等待用户确认是否执行。 

ignore xxx //增加 xxx 到忽略列表中  :经测试此参数不能用。

ignorecase [true|false|default] //是否忽略文件名大小写 

follow xxx //是否支持对符号连接指向内容的同步 

xferbycopying = true

immutable xxx //不变目录,扫描时可以忽略 

silent //安静模式 

times=true //同步修改时间 

path xxx 参数 //只同步 -path 参数指定的子目录以及文件,而非整个目录,-path 可以多次出现。

confirmbigdel=false//默认值为true,表示当需要同步的两个目录一个为空时,unison将停止,这里设置为false,即便为空unison也不会停止运转

##实时同步:

1.可以使用crontab :

/2 * * * /usr/local/bin/unison > /dev/null

service crond reload

2.可以使用repeat=1参数,每秒同步一次

3.可以搭配inotify实现实时同步,此方法可以解决在unison之前在两端同时修改同一个文件而造成的不同步的问题。

猜你喜欢

转载自blog.csdn.net/wangxin3618/article/details/82184857