双向实时数据同步部署

首先添加服务器ssh信任,即免秘钥登陆

Web1:192.168.10.36

Web2:192.168.10.37

分别在web1和web2上执行以下命令

mkdir ~/.ssh
chmod 700 ~/.ssh
生成RSA密钥
ssh-keygen -t rsa 
(然后连续三次回车)

添加密钥到授权密钥文件中

cd
~/.ssh
ssh "-p 22" 192.168.10.36 cat /root/.ssh/id_rsa.pub >>
authorized_keys  #小写p
ssh "-p 22" 192.168.10.37 cat /root/.ssh/id_rsa.pub >>
authorized_keys
scp  -P 22 authorized_keys 192.168.10.37:/root/.ssh/  #大写P

chmod
600 /root/.ssh/authorized_keys
在服务器server2上操作
chmod 600 /root/.ssh/authorized_keys

需要提供软件列表:(版本必须一致)

inotify-tools-3.14.tar.gz

ocaml-3.12.1.tar.gz

unison-2.40.63.tar.gz

下载地址:

wget http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz

wget http://caml.inria.fr/pub/distrib/ocaml-3.12/ocaml-3.12.1.tar.gz

wget http://www.seas.upenn.edu/~bcpierce/unison//download/releases/stable/unison-2.40.63.tar.gz(不可用)

两台服务器都要执行以下命令:

yum install ctags-etags

tar xzvf inotify-tools-3.14.tar.gz

cd inotify-tools-3.14

./configure

Make

make install

tar -zxvf ocaml-3.12.1.tar.gz

cd ocaml-3.12.1

./configure

make world opt

make install

tar -xzvf unison-2.40.63.tar.gz

cd unison-2.40.63

make UISTYLE=text

make install

执行make install时提示以下错误:

mv /root/bin//unison /tmp/unison-24397

mv: 无法获取"/root/bin//unison"
的文件状态(stat): 没有那个文件或目录

make: [doinstall] 错误 1 (忽略)

cp unison /root/bin/

cp: 无法创建普通文件"/root/bin/":
是一个目录

make: *** [doinstall] 错误 1

因为unison默认是将unison文件拷贝到/root/bin目录,但Linux默认没有该目录,所以我们需要将生成的可执行文件unison复制到系统PATH目录。

所以需要我们手动执行以下命令:

cp unison /usr/local/bin

测试同步情况:

unison -batch /home/web1/ ssh://192.168.10.37//home/wen2/

在web1设备上新建脚本,并且后台运行:

Vi unison.sh

------------------------------------以下是脚本内容-------------------------------------------

#/bin/bash

ip2="192.168.10.36"

src2="/home/web1/"

dst2="/home/web2/"

/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.log

echo `date | cut -d " " -f1-4`
>> /var/log/inotify.log

done

------------------------------------以上是脚本内容-------------------------------------------

在web2设备新建脚本,并且后台运行

Vi unison.sh

------------------------------------以下是脚本内容-------------------------------------------

#/bin/bash

ip2="192.168.10.37"

src2="/home/web2/"

dst2="/home/web1/"

/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.log

echo `date | cut -d " " -f1-4`
>> /var/log/inotify.log

done

------------------------------------以上是脚本内容-------------------------------------------

分别在两台设备上运行脚本,测试是否能够同步。

unison+inotify-tools触发式双向自动同步的更多相关文章

  1. Linux(centos5.0+)unison+inotify-tools触发式双向自动同步

    192.168.1.11是server1, 192.168.1.22是server2. [1]安装inotify-tools   各大linux发行版本都有inotify-tools软件包,建议通过y ...

  2. unison + inotify 实现文件实时双向同步部署步骤

    unison + inotify 实现文件实时双向同步部署步骤 一. Unison简介 Unison是Windows.Linux以及其他Unix平台下都可以使用的文件同步工具,它能使两个文件夹(本地或 ...

  3. unison+inotify实现文件双向自动同步

    nfs适合存小图片和小文件,有一个致命的缺点,就是其中一台web服务挂掉之后,会直接导致web页面无法访问,动态的那种数据, 而且数据量很大的数据不适合nfs Unison是一款跨平台(window, ...

  4. [转]通过rsync+inotify-tools+ssh实现触发式远程实时同步

    文件的同步镜像在很多地方都需要用到,因此rsync这款免费软件得到了广泛的应用,包括在Windows平台上,都已经有了支持rsync的“cwRsyncServer”. 但是,我们一般都是通过结合cro ...

  5. Rsync+Inotify实现文件自动同步

    1>rsync概述 rsync的优点与不足 rsync与传统的cp.tar备份方式相比,rsync具有安全性高.备份迅速.支持增量备份等优点,通过rsync可以解决对实时性要求不高的数据备份需求 ...

  6. unison+inotify的Web目录同步方案

    1.在Linux下做WEB目录文件同步 一般有如下几种方式: ----------------------------------------------- 1)       nfs实现web数据共享 ...

  7. unison+inotify 同步web代码并排除指定目录不同步

    unison + inotify  实现web 数据双向同步   unison 是一款跨平台的文件同步对象,不仅支撑本地对本地同步,也支持通过SSH,RSH和Socket 等网络协议进行同步.unis ...

  8. rsync+inotify实现服务器之间文件实时同步--转

    之前做了“ssh信任与scp自动传输脚本”的技术文档,此方案是作为公司里备份的方法,但在实际的运行中,由于主服务器在给备份服务器传输的时候,我们的主服务器需要备份的文件是实时.不停的产生的,造成不知道 ...

  9. linux系统中rsync+inotify实现服务器之间文件实时同步

    最近需要对服务器上的文件实施动态备份,我又不想每次都手动来进行备份,在网上找了挺多资料,发现使用rsync就可以实现,如果想要实现实时同步,还可以使用rsync+inotify组合,本文就是以组合方式 ...

随机推荐

  1. 我理解的Sitecore开发流程

    Sitecore是一个强大的支持快速开发CMS建站的平台,进入sitecore后台可以看到 它主要有3个元素: 1.Templates模板 Data template:类似于面向对象编程中的类或结构体 ...

  2. win7系统下python安装numpy,matplotlib,scipy和scikit-learn

    1.安装numpy,matplotlib,scipy和scikit-learn win7系统下直接采用pip或者下载源文件进行安装numpy,matplotlib,scipy时会遇到各种问题,这是因为 ...

  3. Java的国际化(i18n)

    http://blog.csdn.net/csuliky/article/details/4225800 1. Java国际化简介 Java既然作为一个跨平台的语言就必然要在各种不同的语言环境中使用, ...

  4. python re模块search()与match()区别

    re.search()搜索字符串并返回结果. 整个字符串搜索. re.match()匹配字符串并返回结果 从开始处匹配. 所以,match()可以理解为search()的一个子集.

  5. Libvlc API 简单说明 [转]

    Libvlc API 简单说明 原文来自http://www.xuebuyuan.com/1519616.html libvlc_instance_t* libvlc_new(int argc, co ...

  6. Linux下的压缩和解压缩命令——gzip/gunzip

    gzip命令 gzip命令用来压缩文件.gzip是个使用广泛的压缩程序,文件经它压缩过后,其名称后面会多处".gz"扩展名. gzip是在Linux系统中经常使用的一个对文件进行压 ...

  7. python之路十九

    1.Django请求生命周期        -> URL对应关系(匹配) -> 视图函数 -> 返回用户字符串        -> URL对应关系(匹配) -> 视图函数 ...

  8. Go简介

    Go是Google开发的一种编译型,並發型,并具有垃圾回收功能的编程语言. 罗伯特·格瑞史莫(Robert Griesemer),罗勃·派克(Rob Pike)及肯·汤普逊于2007年9月开始设计Go ...

  9. 函数floor(n)

    Matlab函数floor(n): 仅取整数部分,剔除小数部分 例如: floor(9.2)=9; 仅此

  10. sh6.脚本磁盘分区格式化

    练习1. 写一个脚本,通过ping 命令测试192.168.0.100到192.168.0.254之间的所有主机是否在线, 如果在线,就显示"ip is up."IP为真实IP地址 ...