日期:2011-06-15 16:21:00 来源:本站整理
用Unison实现数据的双向及时同步[Linux安全]
本文“用Unison实现数据的双向及时同步[Linux安全]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
1、Unison简介
Unison是windows和unix平台下都可以利用的文件同步工具,它能使两个文件夹(本地或网络上的)保持内容的一致.unison拥有别的一些同步工具或文件系统的相同特点,但也有自己的特点:
l 跨平台利用;
l 对内核和用户权限没有分外要求;
l unison是双向的,它能自动处理两分拷贝中更新没有冲突的部份,有冲突的部份将会显示出来让用户挑选更新战略;
l 只如果能连通的两台主机,便可以运行unison,可以直接利用socket衔接或安全的ssh衔接方法,对带宽的要求不高,利用近似rsync的紧缩传输协议.
Unison有文字界面和图形界面,这里只介绍如安在文字界面下利用.
2、安装unison
unison各种版本下载地址:
http://www.seas.upenn.edu/~bcpierce/unison//download.html
unison编译器下载地址:
http://caml.inria.fr/pub/distrib/ocaml-3.10
从以上地址可以下载各种平台,各种版本的unison,有基于源码安装的,有二进制的,我下载的是二进制的,可以直接利用.这里介绍源码安装:
1:源码安装unison
Linux下从源码包编译安装,需求一个叫做Objective Caml compiler的工具,版本至少3.0.7,可以从这里下载:http://caml.inria.fr/
Ocaml安装脚本以下:
# tar -zxf ocaml-3.09.3.tar.gz
# cd ocaml-3.09.3
# ./configure
# make world opt
# make install
Unison对版本要求很高,举行同步的两台主机需求相同版本的unison,所以这里利用和windows一致的版本2.13.16,unison-2.13.16.tar.gz
安装脚本以下:
# tar -zxf unison-2.13.16.tar.gz
# cd unison-2.13.16
# make UISTYLE=text
# make install
之后将生成可履行文件unison,将其cp到系统PATH便可.
# cp ./unison /usr/local/bin
3、配置双机ssh信任
由于unison在远程同步文件夹要登陆远程服务器,因此要配置两机彼此信任
本例假定本地机为:10.178.1.132(linux)
远程机:10.178.1.110(solaris)
1. 在两台机械上成立 RSA密钥
以下操作要在本地机和远程机上都履行一遍
(1)以 root 用户登录
(2)在 root 用户的 主目录内成立.ssh 目录并设置精确的权限
[root@gsgatzhapp1 ~]# mkdir ~/.ssh
[root@gsgatzhapp1 ~]# chmod 700 ~/.ssh
(3)利用 ssh-keygen 号令生成第 2 版本的 SSH 协议的 RSA 密钥
[root@gsgatzhapp1 ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
17:e4:7c:79:8d:a0:00:3b:d9:f7:7a:56:f3:ac:54:4d oracle@gsgatzhapp1
在提醒保存私钥(key)和公钥(public key)的位置时,利用默许值. 假如需求私钥密码(passphrase),则输入一个私钥密码(假如利用私钥密码,利用 ssh 履行远程号令时需求输入私钥密码,因此,本案例中未利用私钥密码),因此,直接回车便可.
2. 增添密钥到受权密钥文件(authorized key file)中
(1)以 root 用户登录
(2)在本地机上履行
[root@gsgatzhapp1 ~] # cd ~/.ssh
[root@gsgatzhapp1.ssh]#ssh 10.178.1.132 cat /root/.ssh/id_rsa.pub >> authorized_keys
[oracle@gsgatzhapp1.ssh]#ssh 10.178.1.110 cat /root/.ssh/id_rsa.pub >> authorized_keys
[oracle@gsgatzhapp1.ssh]#scp authorized_keys 10.178.1.110:/root/.ssh/
[oracle@gsgatzhapp1 .ssh]# chmod 600 /root/.ssh/authorized_keys
(3)在远程机10.178.1.110 上:
bash-2.05# chmod 600 /root/.ssh/authorized_keys
(4)测试
完成后,在 gsgatzhapp1 上履行:
[root@gsgatzhapp1 ~]# ssh 10.178.1.132 date
[root@gsgatzhapp1 ~]#ssh 10.178.1.110 date
假如不需求输入密码就呈现系统日期,阐明 SSH 配置成功.
4、unison的利用
Unison可以在一台主机上利用,同步两个文件夹,也可以在网络上是用.
1:本地利用
利用办法:
#unison ixdba ixdba1 #同步本地的ixdba和ixdba1文件夹
Contacting server...
Looking for changes
Warning: No archive files were found for these roots. This can happen either
because this is the first time you have synchronized these roots,
or because you have upgraded Unison to a new version with a different
archive format.
Update detection may take a while on this run if the replicas are
large.
Unison will assume that the 'last synchronized state' of both replicas
was completely empty. This means that any files that are different
will be reported as conflicts, and any files that exist only on one
replica will be judged as new and propagated to the other replica.
If the two replicas are identical, then no changes will be reported.
Press return to continue.[<spc>] Reconciling changes
ixdba ixdba1
<---- file readme.txt [f] ?
Commands:
<ret> or f or <spc> follow unison's recommendation (if any)
I ignore this path permanently
E permanently ignore files with this extension
N permanently ignore paths ending with this name
m merge the versions
d show differences
x show details
l list all suggested changes
p or b go back to previous item
g proceed immediately to propagating changes
q exit unison without propagating any changes
/ skip
> or . propagate from left to right
< or , propagate from right to left
<---- file readme.txt [f] f
Proceed with propagating updates? [] y
Propagating updates
UNISON started propagating changes at 15:06:08 on 27 Aug 2007
[BGN] Copying readme.txt
from /ixdba1
to /ixdba
[END] Copying readme.txt
UNISON finished propagating changes at 15:06:08 on 27 Aug 2007
Saving synchronizer state
Synchronization complete (1 item transferred, 0 skipped, 0 failures)
假如检测到两个文件夹有所差别,unison会提醒,让你挑选呼应的操作.如上例所示.
表示右边ixdba1的文件夹有新的文件,能否同步到左边的ixdba文件夹,f表示force,然后将确认,举行更新,假如输入?会有更具体的介绍.
2: unison远程利用
利用办法:
# unison <本地目录> ssh://remotehostname(IP)/<远程目录的绝对途径>
比方:
# unison /home/AAA ssh://username@remotehostname(ip)//DB/path/BBB
表示将本机的目录/home/AAA和远端主机的/DB/path/BBB举行同步.普通的,需求两台机能ssh衔接.
注意 在主机和目录间又多加了一个 "/"
3:unison参数阐明
Unison有很多参数,这里只介绍常常利用的几个,具体的请参看unison手册:
? -testserver
测试连通性,衔接到服务器即退出.示例:
$ unison / ssh://opensou1@bluehost/ -servercmd=~/bin/unison -testserver
假如服务器端 unison 可履行文件不在默许目录下,乃至没有 unison 号令(需求你编译一个上传到服务器),则需求利用 -servercmd 参数奉告要履行的服务器 unison 号令位置.
利用 -testserver 参数,则成功链接即退出,也不会去履行目录的对比等后续操作.
? -servercmd xxx
奉告 unison, 服务器端的 unison 号令是什么.拜见上面的示例.
? -auto
承受缺省的行动,然后等候用户确认能否履行.
? -batch
batch mode, 全自动情势,承受缺省行动,并履行.
? -ignore xxx
增添 xxx 到忽视列表中
? -ignorecase [true|false|default]
能否忽视文件名大小写
? -follow xxx
能否支持对标记衔接指向内容的同步
? owner = true (保持同步过来的文件属主)
? group = true (保持同步过来的文件组信息)
? perms = -1 (保持同步过来的文件读写权限)
? repeat = 1 (隔断1秒后,开始新的一次同步查抄)
? retry = 3 (失利重试)
? sshargs = -C (利用ssh的紧缩传输方法)
? xferbycopying = true
? -immutable xxx
不变目录,扫描时可以忽视
? -silent
安静情势
? -times
同步改正时间
? -path xxx 参数
只同步 -path 参数指定的子目录以及文件,而非整个目录.-path 可以多次呈现,比方
unison /home/username ssh://remotehost//home/username \
-path shared \
-path pub \
-path .netscape/bookmarks.html
以上是“用Unison实现数据的双向及时同步[Linux安全]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |
评论内容只代表网友观点,与本站立场无关!
评论摘要(共 0 条,得分 0 分,平均 0 分)
查看完整评论