分类: LINUX
2011-04-03 16:22:19
一:Unison简介
Unison是windows和unix平台下都可以使用的文件同步工具,它能使两个文件夹(本地或网络上的)保持内容的一致。Unison有文字界面和图形界面,这里只介绍如何在文字界面下使用. unison拥有其它一些同步工具或文件系统的相同特性,但也有自己的特点:
跨平台使用;
对内核和用户权限没有特别要求;
unison是双向的,它能自动处理两分拷贝中更新没有冲突的部分,有冲突的部分将会显示出来让用户选择更新策略;
只要是能连通的两台主机,就可以运行unison,可以直接使用socket连接或安全的ssh连接方式,对带宽的要求不高,使用类似rsync的压缩传输协议。
二:Unison的安装
unison各种版本下载地址:
unison 编译器下载地址:
从以上地址可以下载各种平台,各种版本的unison,有基于源码安装的,有二进制的,我下载的是二进制的,可以直接使用.这里介绍源码安装:
源码安装unison
1.ocaml-3.10.0的安装(安装unsion所需要的依赖包,两台服务器都需要安装)
1. #wget
2. #tar -zxvf ocaml-3.10.0.tar.gz
3. #cd ocaml-3.10.0
4. #./configure
5. #make world && make bootstrap && make opt && make opt.opt && make install
2.unison-2.13.16的安装 (两台服务器都需要安装)
1. #wget
2. #tar -zxvf unison-2.13.16.tar.gz
3. #cd unison-2.13.16
4. # make UISTYLE=text THREADS=true STATIC=true && make install
5.#cp unison /usr/bin 即把unison可执行文件放入$PATH中。
这里可能会报错说是找不到mkProjectInfo文件,此时执行make
./mkProjectInfo即可生成mkProjectinfo。
(使用命令行方式,加入线程支持,编译为静态模式)
三:Unsion的配置
1.配置ssh无密码登陆
1)生成密钥
#ssh-keygen (一路回车)
2)配置sshd_config
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys (去掉这三项的注释)
3)导入/导出公钥
node1#scp
/root/id_rsa.pub 将163机器的公钥导入本机。
node1#scp .ssh/id_rsa.pub
/root/.ssh/authorized_keys && rm /root/id_rsa.pub" 将本机的公钥导入163机器。其实就是两台主机互换公钥。
4) chmod 600 authorized_keys 一定要改变权限为600
5)重启sshd
#service sshd restart
2.配置unison
1)创建/root/.unison/default.prf //这个配置文件是默认的默认的配置文件。
注意:root = ssh://192.168.0.163//root/test 在另一台服务器上这里写上对方服务器的ip地址,也就是在两台服务器上分别指向另一台服务器的地址。注意如果SSH端口号不是默认的22,则要在ssh://192.168.0.163:7777这样来输入
#vi /root/.unison/default.prf
2. root = /root/test
3. root = ssh://192.168.0.163//root/test
4. log = true
5. auto = true
6. batch = true
7. maxthreads = 500
8. owner = true 保留同步文件的权限
9. group = true 同上
10.perms = -1 同上
11.repeat = 300 设置同步的间隔。注意这里不要设置的太频繁,否则CPU会居高不下,我的是设置5分钟,在执行的时候CPU会占用较高。
12.retry = 3
13.sshargs = -C
14.xferbycopying = true
15.path = ./test2 相对于root的相对路径,可以有多个path进行同步。
16.path = ./test3 . 一定要加,我在使用时如果不加.会报“不是相对路径”的错误。
3.测试
1.建同步目录
1. #mkdir /root/test
2. #touch /root/test/i-am-no-empty
#unison 这样启动时会占用当前终端,也就是当前终端被关掉时程序会退出。可以用nohup命令放在后台运行。nohup unison &
Contacting server...
Looking for changes
Waiting for changes from server
Reconciling changes
Nothing to do: replicas have not changed since last sync.
Sleeping for 1 seconds...
4、在一台电脑上启动unison之后,其实在两台电脑上都运行了unison
root@syncclient imkftfl]# ps aux | grep unison 这是在客户端也就是启动unison的那台机器上面。
imkftfl 5547 7.3 0.2 40712 31104 pts/0 S 09:26 1:57 unison
imkftfl 5548 0.0 0.0 59128 3392 pts/0 S 09:26 0:00 ssh -p 2345 219.232.227.118 -e none -C unison -server
root 11069 0.0 0.0 61156 728 pts/0 S+ 09:53 0:00 grep unison
[root@localhost ~]# ps aux | grep unison 这是服务端。
imkftfl 21823 7.2 0.1 41052 31352 ? Ss 09:25 1:56 unison -server
root 25654 0.0 0.0 61172 740 pts/0 S+ 09:52 0:00 grep unison