nfs适合存小图片和小文件,有一个致命的缺点,就是其中一台web服务挂掉之后,会直接导致web页面无法访问,动态的那种数据,

而且数据量很大的数据不适合nfs

Unison是一款跨平台(window,unix,linux)的文件同步对象,不仅支撑本地对本地同步,也支持经由过程SSH、RSH和Socket同

步支持双向同步

下载并且编译安装三个软件包。(inotify-tools-3.14.tar.gz、ocaml-3.10.2.tar.gz、unison-2.32.52.tar.gz)

mkdir  /tools    cd /tools

wget http://caml.inria.fr/pub/distrib/ocaml-3.10/ocaml-3.10.2.tar.gz

wget http://www.seas.upenn.edu/~bcpierce/unison//download/releases/unison-2.32.52/unison-2.32.52.tar.gz

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

tar xf inotify-tools-3.14.tar.gz

tar xf ocaml-3.10.2.tar.gz

tar xf unison-2.32.52.tar.gz

cd inotify-tools-3.14

./configure --prefix=/usr/local/inotify && make && make install

echo "PATH=/usr/local/inotify/bin:$PATH" >/etc/profile.d/inotify.sh

source /etc/profile.d/inotify.sh

echo "/usr/local/inotify/lib" >/etc/ld.so.conf.d/inotify.conf   (创建库文件)

ldconfig -v | grep inotify    (使系统从新装载一下所有库文件)

ln -sv /usr/local/inotify/include/ /usr/include/inotify  (导出头文件)

cd /tools/ocaml-3.10.2

./configure

make world opt

make install

cd /tools/unison-2.32.52

yum -y install ctags-etags

make UISTYLE=text THREADS=true STATIC=true

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

make install

接下来会提示错误

mv /root/bin//unison /tmp/unison-10576

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

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

cp unison /root/bin/

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

make: *** [doinstall] 错误 1

上述报错不用管他,接下来使用一条命令就可以:cp unison /usr/local/bin

上述操作在其他要同步的服务器也操作一遍

生成ssh秘钥对:ssh-keygen     cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys

将文件id_rsa    id_rsa.pub    authorized_keys   复制到其他主机上的对应目录

也可以使用ssh-copy-id -i命令,例如:ssh-copy-id -i ./.ssh/id_rsa.pub root@192.168.238.236

mkdir -p /var/vm1

mkdir -p /var/vm2

vmware1上

[root@vmware1 ~]# cat unison-A.sh

#!/bin/bash
ipB="192.168.1.11"
srcA="/var/vm1"
dstB="/var/vm2"
/usr/local/inotify/bin/inotifywait -mrq -e create,delete,modify,move $srcA | while read line; do
/usr/local/bin/unison -batch $srcA ssh://$ipB/$dstB
echo -n "$line " >> /var/log/inotify.log
echo `date | cut -d " " -f1-4` >> /var/log/inotify.log
done
[root@vmware1 ~]# chmod o+x unison-A.sh
[root@vmware1 ~]# bash unison-A.sh &
 
crontab -e
* * * * * bash unison-A.sh & 

vmware2上

[root@vmware2 ~]# cat unison-B.sh

#!/bin/bash
ipA="192.168.1.12"
srcB="/var/vm2"
dstA="/var/vm1"
/usr/local/inotify/bin/inotifywait -mrq -e create,delete,modify,move $srcB | while read line; do
/usr/local/bin/unison -batch $srcB ssh://$ipA/$dstA
echo -n "$line " >> /var/log/inotify.log
echo `date | cut -d " " -f1-4` >> /var/log/inotify.log
done
[root@vmware1 ~]# chmod o+x unison-B.sh
[root@vmware2 ~]# bash unison-B.sh &
 
crontab -e
* * * * * bash unison-B.sh &
 
如何解决在和远程服务器同步大量数据,上传一部分数据后超时

实际操作中,最好的方法是,第一次先把要上传的文件打成包,用 nc 上传,然后展开到服务器中,之后手动执行一次 unison 同步即

补充:使用自动同步之前最好执行一下手动同步

补充:当文件同步完成后可能会看到如下信息

要求认证RSA密钥的指纹信息,这个是没有必要的,每次手动输入yes很麻烦,vim /etc/ssh/ssh_config在最后一行添加如下信

息StrictHostKeyChecking no

群集中,同步在多机之间进行,而unison的同步功能仅支持双机。因此我们设计了一个星型的拓扑结构,来实现多机的同步。其设计

思想就是利用unison的双向同步功能,指定一台服务器为星型结构的主服务器(server1),剩余服务器与其进行双向同步。这样,任

何一台服务器上的文件变化都可以通过这个结构扩散,从而达到多机同步的目的;这一结构的缺点是一旦server1当机失效,同步就会

失败。因此,有必要的话,可以组成双主服务器的星型结构来弥补;

unison+inotify实现文件双向自动同步的更多相关文章

  1. unison+inotify-tools触发式双向自动同步

    双向实时数据同步部署 首先添加服务器ssh信任,即免秘钥登陆 Web1:192.168.10.36 Web2:192.168.10.37 分别在web1和web2上执行以下命令 mkdir ~/.ss ...

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

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

  3. [转]CENTOS 使用RSYNC+INOTIFY实现文件实时自动同步

    FROM : http://www.qiansw.com/centos-rsync-inotify-file-sync.html 生产环境中的两台web服务器,有个目录需要完全一样.使用rsync和i ...

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

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

  5. Linux下svn提交文件后自动同步更新到网站目录

    有时,对于多文件需要上传到服务器的时候将会很麻烦,但是如果使用svn的钩子脚本就容易实现本地提交svn后,自动同步代码文件到远程服务器的网站目录下,而不必手动上传了. 首先,在网站目录下checkou ...

  6. unison+inotify实现数据双向同步

    unison是一款跨windows/linux/MAC OS平台的文件同步工具,不仅支持本地对本地同步,也支持通过SSH.RSH和Socket等网络协议进行同步.更棒的是,unison支持双向同步操作 ...

  7. nfs+rsync+inotify实现文件的实时同步

    准备三台服务器进行测试: nfs_server:192.168.12.110 web_server:192.168.12.111 rsync_server:192.168.12.112 网络规划图: ...

  8. 12.2 中的Data Guard Standby 密码文件自动同步 (Doc ID 2307365.1)

    Data Guard Standby Automatic Password file Synchronization in 12.2 (Doc ID 2307365.1) APPLIES TO: Or ...

  9. linux web服务器静态资源的处理 unison+inotify双向同步

    linux web服务器静态资源的处理 unison+inotify双向同步 http://monkeyzhu.blog.51cto.com/5764358/1324391 简介 unison可以使两 ...

随机推荐

  1. xargs -r

    -r  no-run-if-empty xargs大多数 Linux 命令都会产生输出:文件列表.字符串列表等.但如果要使用其他某个命令并将前一个命令的输出作为参数该怎么办?例如,file 命令显示文 ...

  2. maven项目导入报错

    极大可能是仓库设置问题

  3. flask-sqlalchemy分表解决方案

    转自:http://ju.outofmemory.cn/entry/61448 关键词: flask-sqlalchemy, sqlalchemy, 分表,分库 大型系统.海量数据肯定涉及到分库分表这 ...

  4. jmeter随笔(1)-在csv中数据为json格式的数据不完整

    昨天同事在使用jmeter遇到问题,在csv中数据为json格式的数据,在jmeter中无法完整的取值,小怪我看了下,给出解决办法,其实很简单,我们一起看看,看完了记得分享给你的朋友. 问题现象: 1 ...

  5. 利用Oracle VM VirtualBox部署自己的owncloud存储服务器

    最近在弄文档方面的工作,所以想找个能够自动备份且带历史版本的网盘,找了很久没找到,所以决定自己部署一个私人服务器. 找了很久.试了很久终于确定owncloud能够满足自己的要求,而且还是开源免费的. ...

  6. Change screensaver through registry

    If you wanna change the screensaver, you can update registry as follows{autoit script}: RegWrite(&qu ...

  7. opencv_协方差矩阵与协方差讲解

    统计学的基本概念 学过概率统计的孩子都知道,统计里最基本的概念就是样本的均值,方差,或者再加个标准差.首先我们给你一个含有n个样本的集合,依次给出这些概念的公式描述,这些高中学过数学的孩子都应该知道吧 ...

  8. 【PL/SQL练习】DML语句的处理(可以处理多行数据)

    1.Insert (在表中插入一行数据,并查看) SQL> desc t1; Name Type Nullable Default Comments ---- ------------ ---- ...

  9. 谷歌浏览器提示Adobe Flash Player因过期而遭到阻止

    解决方法: 1.下载最新版本chrome://plugins/ 到官网Adobe Flash Player 下载最新版本,目前20 https://get.adobe.com/cn/flashplay ...

  10. hdu 3336【Count the string】(KMP)

    一道字符串匹配的题目,仅仅借此题练习一下KMP 因为这道题目就是要求用从头开始的n个字符串去匹配原来的字符串,很明显与KMP中求next的过程很相似,所以只要把能够从头开始匹配一定个数的字符串的个数加 ...