使用unison 同步文件
一、系统环境
192.168.1.2:
1
2
|
# uname -a Linux s2 2.6.18-128.el5 #1 SMP Wed Dec 17 11:42:39 EST 2008 i686 i686 i386 GNU/Linux
|
1
2
3
4
5
6
|
# lsb_release -a LSB Version: :core-3.1-ia32:core-3.1-noarch:graphics-3.1-ia32:graphics-3.1-noarch Distributor ID: #RedHatEnterpriseServer
Description: #Red Hat Enterprise Linux Server release 5.3 (Tikanga)
Release: 5.3 Codename: Tikanga |
#已安装etags
192.168.1.23
1
2
|
# uname -a Linux localhost.localdomain 2.6.32-431.el6.x86_64 #1 SMP Fri Nov 22 03:15:09 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
|
1
2
3
4
5
6
|
[root@localhost 2.61] # lsb_release -a
LSB Version: :base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch Distributor ID: CentOS Description: CentOS release 6.5 (Final) Release: 6.5 Codename: Final |
#未安装etags,需用yum安装
1
|
已配置双机 ssh 信任。(略去配置过程)
|
二、安装ocaml-3.10.2
1
2
3
4
5
6
7
|
# tar zxvf ocaml-3.10.2.tar.gz # cd ocaml-3.10.2 ##需删除man1,不然会报错 # rm -rf /usr/local/man/man1 # ./configure # make world opt # make install |
三、安装unison-2.32.52
1
2
3
4
|
# tar zxvf unison-2.32.52.tar.gz # cd unison-2.32.52 # make UISTYLE=text THREADS=true STATIC=true # cp unison /usr/local/bin/ |
四、测试连通性
1
|
# unison / ssh://192.168.1.23/ -testserver |
五、示例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
# vim /root/.unison/1.2_ftp.prf #2016-05-17 #back up /var/ftp/pub to 192.168.1.23:/home/databack/1.2_ftp root = /var/ftp/pub
#root = /tmp/unison2 root = ssh : //root @192.168.1.23 //home/databack/1 .2_ftp
force = /var/ftp/pub
#force = /tmp/unison2 batch = true
maxthreads = 100 #repeat = 10 retry = 3 owner = true
group = true
times = true
perms = -1 fastcheck = false
rsync = false
sshargs = -C xferbycopying = true
confirmbigdel = false
log = true
logfile = /root/ .unison /1 .2_ftp.log
|
## 默认读取配置文件目录:/root/.unison或~/.unison
1
|
#/usr/local/bin/unison 1.2_ftp |
六、让其每隔一段时间自动同步
1.crontab
1
2
3
|
注释repeat参数 #repeat = 10 0 8,10,12,14,16,18 * * 1-5 /usr/local/bin/unison 1.2_ftp
|
2.使用其repeat参数
1
2
3
4
5
6
|
开启repeat参数,每小时同步 repeat = 3600 nohup /usr/local/bin/unison 1.2_ftp >> /tmp/1 .2.log &
开机启动 vim /etc/rc . local
nohup /usr/local/bin/unison 1.2_ftp >> /tmp/1 .2.log &
|
七、unison参数详解(网络)
-testserver
测试连通性,连接到服务器即退出。示例:
1
|
# unison / ssh://root@192.168.1.23/ -servercmd=/usr/local/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
是否支持对符号连接指向内容的同步;
例如在我的 ~/.unison 的配置文件 default.prf 中有
# Unison preferences file follow = Path {unison_*} ignore = Path {WWWROOT/wiki_mirror} ignore = Name {,.}*{.~$lock} ignore = Name {a.out}
我将预进行同步的系统文件在 xxx/src 下分别作符号链接,如 unison_httpd.conf 指向 c:/program files/apache/.../httpd.conf。 同步时,"follow = Path {unison_*}" 配置(或参数)将跟踪符号链接指向的实际文件。 如果没有该设置,符号链接不予同步。
-immutable xxx
不变目录,扫描时即忽略
-silent
安静模式
-times
同步修改时间
-path xxx 参数
只同步 -path 参数指定的子目录以及文件,而非整个目录。例如
unison /home/username ssh://remotehost//home/username \ -path shared \ -path pub \ -path .netscape/bookmarks.html
本文转自独弹古调 51CTO博客,原文链接:http://blog.51cto.com/hunkz/1775360,如需转载请自行联系原作者