以下内容是linux服务器中双向(多向)同步的部署过程,

环境:

服务器A:192.168.1.6,同步目录:/var/www

服务器B:192.168.1.7,同步目录:/var/www

安装unison

首先安装ocaml,版本至少为3.07或更高

下载地址:http://caml.inria.fr

tar xf ocaml-3.10.2.tar.gz

cd ocaml-3.10.2

./configure

make world opt

make install

cd ..

安装unison

下载地址:www.seas.upenn.edu/~bcpierce/unison/

tar xvf unison-2.32.52.tar.gz

cd unison-2.32.52

make UISTYLE=text

cp unison /usr/local/bin

cd ..

注:

UISTYLE=text THREADS=true STATIC=true表示使用命令行方式,加入线程支持以静态模式编译

安装inotify

下载地址:http://inotify-tools.sourceforge.net

tar xvf inotify-tools-3.14.tar.gz

cd inotify-tools-3.14

./configure

make

make install

cd ..

配置双机ssh信任

参考此教程:http://www.lvtao.net/server/ssh-no-password.html

添加脚本

在192.168.1.6服务器A上添加脚本:

mkdir /script

vim /script/inotify.sh

######################以下是脚本内容#########################

#/bin/bash

UNISON=`ps -ef |grep -v grep|grep -c inotifywait`

if [ ${UNISON} -lt 1 ]

then

ip2="192.168.1.7"

src2="/var/www/"

dst2="/var/www/ "

/usr/local/bin/inotifywait -mrq -e create,delete,modify,move $src2 | while read line

do

/usr/local/bin/unison -batch $src2 ssh://$ip2/$dst2

echo -n "$line " >> /var/log/inotify/inotify$(date +%u).log

echo ` date +%F\ %T " " -f1-4` >> /var/log/inotify/inotify$(date +%u).log

done

fi

###########################################################

在192.168.1.7服务器上添加脚本:

mkdir /script

vim /script/inotify.sh

######################以下是脚本内容#########################

#/bin/bash

UNISON=`ps -ef |grep -v grep|grep -c inotifywait`

if [ ${UNISON} -lt 1 ]

then

ip2="192.168.1.6"

src2="/var/www/"

dst2="/var/www/ "

/usr/local/bin/inotifywait -mrq -e create,delete,modify,move $src2 | while read line

do

/usr/local/bin/unison -batch $src2 ssh://$ip2/$dst2

echo -n "$line " >> /var/log/inotify/inotify$(date +%u).log

echo ` date +%F\ %T " " -f1-4` >> /var/log/inotify/inotify$(date +%u).log

done

fi

###########################################################

在二台服务器上修改脚本权限:

chmod a+x /script/inotify.sh

在计划任务中添加任务(原本在/etc/rc.local下添加开机启动的,但出问题,脚本并不执行)

crontab –e

#unison+inotify

* * * * * /bin/sh /script/inotify.sh > /dev/null 2>&1 &

测试:

重启电脑,测试二台服务器中/var/www的内容是否能同步

不重启电脑,手动执行脚本也可以测试

sh /script/inotify

相关参数说明

特别注意:在远程使用unison时,在远程主机和目录直接要多加一个"/"

force    表示会以本地所指定文件夹为标准,将该目录同步到远端。这里需要注意,如果指定了force参数,那么Unison就变成了单项同步了,也就是说会以force指定的文件夹为准进行同步,类似与rsync。

Unison双向同步基本原理是:假如有A B两个文件夹,A文件夹把自己的改动同步到B,B文件夹也把自己的改动同步到A,最后A B两文件夹的内容相同,是AB文件夹的合集。

Unison双向同步的一个缺点是:对于一个文件在两个同步文件夹中都被修改时,unison是不会去同步的,因为unison无法判断以那个为准。

testserver      该参数用来测试连通性,连接到服务器后退出,并不进行实际的同步

servercmd       指定服务器端的unison命令路径

ignore = Path   表示忽略指定目录,即同步时不同步它。

batch = true    表示全自动模式,接受缺省动作,并执行。

-fastcheck true 表示同步时仅通过文件的创建时间来比较,如果选项为false,Unison则将比较两地文件的内容。

log = true      表示在终端输出运行信息。

logfile         指定输出的log文件。

另外,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 可以多次出现。

Linux unison 效率,linux利用unison实现双向或多向实时同步相关推荐

  1. Linux使用inotify+unison实现数据、静态资源双向(多向)实时同步

    在特定的情况下需要在多个Linux服务器上做指定文件文件夹的实时同步,一个服务器修改了文件其它服务器的文件能保持一致.本博客非常适用于需要在两台.多台linux服务器做静态资源同步的同学,整个过程简单 ...

  2. linux libpcap 效率,Linux ubuntu PF_RING+libpcap 极速捕获千兆网数据包,不丢包

    本文转自:http://blog.chinaunix.net/uid-23225855-id-3228867.html 上一篇文章讲到了,尤其在千兆网的条件下,大量的丢包,网上搜索好久,大概都是PF_ ...

  3. unison+inotify-tools实现双向实时同步

    linux利用unison实现双向或多向实时同步 以下内容是linux服务器中双向(多向)同步的部署过程, 环境: 服务器A:192.168.1.6,同步目录:/var/www 服务器B:192.16 ...

  4. 利用unison+inotify 实现数据双向实时同步

    利用unison+inotify 实现数据双向实时同步 环境:Centos 6.5 64位 server1 :192.168.1.201 server2 :192.168.1.250 需求软件:oca ...

  5. 用Unison+inotify实现数据的双向实时同步

    一.Unison简介Unison是windows和unix平台下都可以使用的文件同步工具,它能使两个文件夹(本地或网络上的)保持内容的一致.unison拥有其它一些同步工具或文件系统的相同特性,但也有 ...

  6. linux 文件双向同步,Linux文件双向实时同步rsync

    在线QQ客服:1922638 专业的SQL Server.MySQL数据库同步软件 echo"/usr/sersync/sersync2-d-o/usr/sersync/confxml.xm ...

  7. linux创建和编辑文件,linux基础-第九单元 利用vi编辑器创建和编辑正文文件

    vi编辑器简介 什么是vi vi编辑器的操作模式 vi编辑器的3种基本模式 在vi编辑器中光标的移动 移动光标位置的键与光标移动间的关系 进入插入模式 从命令行模式进入插入模式的命令 在命令行模式下删 ...

  8. linux 别名管理,Linux 的 15 个命令行别名, 帮系统管理员提升工作效率!

    Linux 的 15 个命令行别名, 帮系统管理员提升工作效率! Linux 命令行别名非常适合帮助你提高工作效率. 默认情况下, 你安装的 Linux 发行版中包含一些别名. 以下是 Fedora ...

  9. 提高 Linux 开发效率的 5 个工具

    提高 Linux 开发效率的 5 个工具 我们经常需要长时间地坐在电脑前做一项具体的工作只为能够优化工作流程.这包括选择和配置能让你最高效工作的工具.从长远来看,简单易学的工具并不总是好的,那些能够充 ...

  10. 【Linux 笔记】Linux 基本操作 - 04. 利用SRA数据实践文本处理

    [Linux 笔记]Linux 基本操作 - 04. 利用SRA数据实践文本处理 10. 文本处理实践 基本操作 grep 筛选数据(行) cut 和 awk 操作数据(列) sort 常用参数总结 ...

最新文章

  1. CString初始化时提示字符串太大
  2. 职业生涯:怎么样学好Oracle
  3. 请回答! 2018泛娱乐风口
  4. PHP的CURL:请求接口 模拟请求登陆 上传下载
  5. SpringSecurity remember功能基本实现
  6. matlab括号区别,matlab中各种括号(),[],与{}的区别与认识
  7. [HDOJ2586]How far away?(最近公共祖先, 离线tarjan, 并查集)
  8. python整数转换字符串_Python | 将字符串转换为整数列表
  9. WPF Bind 绑定
  10. Redis设计与实现学习总结
  11. PreferenceActivity之 Subclasses of PreferenceActivity must override isValidFragment(String)
  12. 彻底理解js中的闭包
  13. FTP、Telnet、SMTP、POP3等服务的名称及端口号和各种数据库的端口号
  14. 知乎周源微信_每周源代码34-F#的兴起
  15. Nao机器人运行B-human代码之开始篇 2
  16. html右侧可隐藏导航栏,HTMLCSS----练习隐藏导航栏(三级导航)
  17. 质量团队的组建与升级
  18. Android手把手教你使用阿里云接口实现人脸定位、人脸检测、人脸对比功能。
  19. C语言学习笔记:switch语句、循环语句--while、for、getchar,eof概念(推荐MSDN查询函数概念等)
  20. Android 开发 AudioRecord音频录制

热门文章

  1. android lame wav 转 mp3,Wav文件转mp3(LAME)
  2. 百度富媒体编辑器 使用
  3. Symbol的基本使用
  4. 原生js页面滚动顶部显示滚动总进度条效果
  5. C#源码刷新网页 最小化托盘http get和post请求配置保存版权时间限制定时调用 单实例运行,如果已经运行则激活窗口到最前显示
  6. h2o api java_H2O框架简介
  7. Vulnhub靶机 it is october
  8. XP系统无法访问\\192.168.1.104无法访问。你可能没有权限使用网络资源。与这台服务器的管理员联系以查明你是否有访问权限
  9. 聊聊在小米实习的日子
  10. 以太网未识别的网络win10_win10系统遇到以太网无法识别网络如何解决