利用Unison实现双向同步镜像

一. Unison简介
Unison是Windows、Linux以及其他Unix平台下都可以使用的文件同步工具,它能使两个文件夹(本地或网络上的)保持内容的一致。Unison拥有与其它一些同步工具或文件系统的相同的特性,但也有自身的特点:
1.跨平台使用;
2.对内核和用户权限没有特别要求;
3.Unison是双向的,它能自动处理两分拷贝中更新没有冲突的部分,有冲突的部分将会显示出来让用户选择更新策略;
4.只要是能连通的两台主机,就可以运行unison,可以直接使用socket连接或安全的ssh连接方式,对带宽的要求不高,使用类似rsync的压缩传输协议。
 
二. 编译安装Unison
1.实验环境:
  node0 192.168.32.30  同步目录 /var/www/html
  node1 192.168.32.31  同步目录 /var/www/html
 
2.安装Objective Caml compiler
Linux下通过源码包编译安装Unison时,需要用到Objective Caml compiler。
[root@node0 ~]# wget
[root@node0 ~]# tar -xzvf ocaml-3.10.2.tar.gz
[root@node0 ~]# cd ocaml-3.10.2
[root@node0 ocaml-3.10.2]# ./configure
[root@node0 ocaml-3.10.2]# make world opt
[root@node0 ocaml-3.10.2]# make install
 
3、编译安装Unison
[root@node0 ~]# wget ~bcpierce/unison//download/releases/unison-2.32.52/unison-2.32.52.tar.gz
[root@node0 ~]# tar -xzvf unison-2.32.52.tar.gz
[root@node0 ~]# cd unison-2.32.52
[root@node0 unison-2.32.52]# make UISTYLE=text THREADS=true STATIC=true
#UISTYLE=text THREADS=true STATIC=true 表示:使用命令方式,加入线程支持,以静态模式编译
 
[root@node0 unison-2.32.52]# make install
#在执行make install的过程中,可能会出现以下错误提示:
mv: cannot stat '/root/bin//unison': No such file or directory
make: [doinstall] Error 1 (ignored)
cp unison /root/bin/
cp: cannot create regular file '/root/bin/': Is a directory
make: *** [doinstall] Error 1
#出现错误的原因在与Unison默认是将文件Copy到/root/bin目录,但Linux默认是没有该目录的,因此我们需要将生成的可执行文件unison复制到系统的PATH目录。
 
[root@node0 unison-2.40.63]# cp unison /usr/local/bin
#将生成的可执行文件unison复制到系统的PATH目录。
 
[root@node0 unison-2.40.63]# scp unison root@192.168.32.31:/usr/local/bin/unison
#将可执行文件unison上传到远程主机(假设远程主机IP为192.168.32.31)的/usr/local/bin目录下
 
 
三. 配置ssh key信任
1.在node0上创建key并配置node1的信任
[unison@node0 ~]$ ssh-keygen -t rsa
#在提示保存私钥(key)和公钥(public key)的位置时,使用默认值;
#在提示是否需要私钥密码(passphrase)时,直接敲回车,即不使用私钥密码。
#之后,将生成一对密钥,id_rsa(私钥文件)和id_rsa.pub(公钥文件),保存在/root/.ssh/目录下。
 
[unison@node0 ~]$ssh node1 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
#将文件上传到node1,并将公钥添加到node1的 authorized_keys 文件中
 
2.同理,执行以下步骤在node1上创建key并配置node0的信任
[unison@node1 ~]$ ssh-keygen -t rsa
[unison@node1 ~]$ssh node0 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
 
四. Unison的三种调用方式
1. 方式一:unison profile_name [options]"
unison默认会读取~/.unison目录下的配置文件profile_name.prf.
这种方式下,配置文件中必须指定要进行文件同步的路径和相关参数如:
[root@node0 .unison]# vim ~/.unison/default.prf
# Unison preferences file
root = /var/www/html
root = ssh://root@node1//var/www/html
batch = true
 
2. 方式二:unison profile root1 root2 [options]
root1、root2分别表示要同步的两个路径,命令中已经指定路径,配置文件中无需再指定,如:
[root@node0 .unison]# touch  
[root@node0 .unison]# unison /var/www/html ssh://node1//var/www/html
#配置文件内容为空,表示所有其他参数均为默认
#出现提示确认,则直接敲回车选择默认值
 
3. 方式三:unison root1 root2 [options]
这种方式和方式二一样,相当于执行"unison default root1 root2"命令,即unison默认读取~/.unison/default.prf的配置,如:
[root@node0 .unison]# unison /var/www/html ssh://node1//var/www/html

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/pfpdz.html