发布时间:2020-07-22 20:06:06来源:阅读:
Unison是一款跨windows/linux/MAC OS平台的文件同步工具,不仅支持本地对本地同步,也支持通过SSH、RSH和Socket等网络协议进行同步。更棒的是,Unison支持双向同步操作,你既可以从A同步到B,也可以从B同步到A,这些都不需要额外的设定。遗憾的是,unison无法实现实时双向同步。下面介绍unison的安装及使用方法。
在安装unison之前,需要安装ocaml编译器。
cd /tmp wget http://caml.inria.fr/pub/distrib/ocaml-3.12/ocaml-3.12.1.tar.gz tar xzf ocaml-3.12.1.tar.gz cd ocaml-3.12.1 ./configure make world opt make install
cd /tmp wget http://www.seas.upenn.edu/~bcpierce/unison//download/releases/stable/unison-2.40.63.tar.gz tar xzf unison-2.40.63.tar.gz cd unison-2.40.63 make UISTYLE=text mkdir /root/bin make install cp /root/bin/unison /usr/bin/
如需要实现远程双向文件同步,两台机子都需要安装unison。
unison的连接传输方式有两种:一是ssh,二是socket。我们这里先用比较安全的ssh。所以为了不需要密码连接,首先为它们配置密钥。
例假设本地机为: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
在提示保存私钥(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 配置成功。
unison的命令格式为:unsion 目录1 目录2 选项
例1:unison /home/dir1 /home/dir2
表示同步本地两个目录dir1和dir2。
例2:unison /home/dir1 ssh://192.168.1.2//root/dir
表示本地的目录/home/dir1通过ssh同步远程机器192.168.1.2的目录/root/dir。
例3:unison /home/dir1 ssh://192.168.1.2//root/dir -batch
表示本地的目录/home/dir1通过ssh同步远程机器192.168.1.2的目录/root/dir,并不需要回答任何问题直接同步,batch参数表示不需要回答问题。
下面是一些参数的解释,更多的参数可以用命令unison -help查看。
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可以调用配置文件的方式使用,如unison rsync就是调用~/.unison/rsync.prf文件。
下面是我的一个web应用中两个文件夹同步的配置信息:
root = /sina/webdata
root = ssh://root@192.168.60.121//sina/webdata
#force =/sina/webdata
ignore = Path as/*
#prefer = ssh://root@192.168.60.121//sina/webdata
batch = true
#repeat = 1
#retry = 3
owner = true
group = true
perms = -1
fastcheck=false
rsync =false
#debug=verbose
sshargs = -C
xferbycopying = true
log = true
logfile = /root/.unison/sina_122.1547.log
说明如下:
两个root表示需要同步的文件夹
force表示以本地的/var/www/bbsnew文件夹为标准,将该目录同步到远端。注意,如果指定了force参数,那么unison就变成了单项同步了,也就是说会以force指定的文件夹为准进行同步.
Unison本身是可以双向同步的,但是要做到双向同步,就不要设置force参数,如果设置了force参数,就成了单项同步了,此时unison类似与sync.
Unison双向同步基本原理是:假如有A B两个文件夹,A文件夹把自己的改动同步到B,B文件夹也把自己的改动同步到A,最后A B两文件夹的内容相同,是 A B文件夹的合集.
Unison双向同步的一个缺点是,对于一个文件在两个同步文件夹中都被修改时,unison是不会去同步的,因为unison无法判断以那个为准.
ignore = Path表示忽略/sina/webdata下面的WEB-INF/tmp目录,即同步时不同步它。
batch = true,表示全自动模式,接受缺省动作,并执行
-fastcheck true表示同步时使用文件的创建时间来比较两地文件,如果这个选项为false,unison则将比较两地文件的内容.建议设置为true
log = true表示在终端输出运行信息。
logfile则指定了同时将输出写入log文件。
unison很难做到实时同步,不过可以做到定时同步,配合cronjob就可以实现,如:
crontab -e
0 3 * * * unison rsync
参考文章:http://www.cis.upenn.edu/~bcpierce/unison/download/releases/stable/unison-manual.html
http://ixdba.blog.51cto.com/2895551/584334
Echosync(文件同步和备份程序) V4.1.3.0 绿色版
7.75M
Sync Breeze(文件同步工具) v10.7.14 官方版
12.61M
微力同步(文件同步工具) v1.4.4 绿色版
13.4M
Aloof BAR(数据同步软件) v3.4 官方版
2.9M
advanced rar password recovery(RAR文件格式密码破解工具) V4.54 官方版
4.3M
ceb文件阅读器下载
42.6M
d3d9(系统文件)2021 绿色版
530.9K
nt6(dll文件)v1.0 官方版
182KB
packet.dll(Windows系统文件)2021 免费版
14.7K
pdf合并软件(pdf文件合并工具)v1.11 官方版
209.0M
小学数学同步课堂 v5.1.1.19
72.95 MB
小学英语同步课堂 v4.1.3.59
14.03 MB
小学英语同步课堂(英语学习软件) v5.6.1.20 免费版
203M
小学语文同步课堂 v5.1.0.72
81.46 MB
慧龙同步专家(目录同步工具) v5.9.411网吧版
8.0M
烁光PDF转换器(文件格式转换工具) v1.2.2.0 免费版
42.46 MB
电脑时间同步器下载
895K
百度云同步盘 v3.9.6.1 官方版
30.6M
金舟文档翻译软件(文件翻译器) 2.8.8.0 最新版
74.0MB
阿里云盘(数据同步软件) v1.4 电脑版
42.4M
2020-04-20
手机与电脑无法连接
试图安装网络设置驱动程序,无法在网络上找到Lenovo设备并完成驱动安装
Nim 发布 2019 年度社区调查报告:大家都用上了 1.0 版本
IdeaPad U110 屏幕上方的蓝灯一直亮?
CSS6当使用老版本的指纹识别软件时,有可能出现“没有找到指纹识别器”现象
LJ3050D打印机单面打印正常,自动双面打印提示纸张错误
万全R670 6100千兆网卡驱动(Intel 82545GM)
CentOS-5 rpm安装yum
ThinkPad电源管理软件(PowerManager)安装过程报错