1、在Linux下做WEB目录文件同步

一般有如下几种方式:

1)       nfs实现web数据共享

2)       rsync +inotify实现web数据同步

3)       rsync+sersync更快更节约资源实现web数据同步

4)       unison+inotify实现web数据双向同步

他们各有优缺点,这里我根据实际情况,选择方案4。

2、Unison简介

Unison是windows和unix平台下都可以使用的文件同步工具,它能使两个文件夹(本地或网络上的)保持内容的一致。Unison拥有其它一些同步工具或文件系统的相同特性,但也有自己的特点:跨平台使用;对内核和用户权限没有特别要求;Unison是双向的,它能自动处理两分拷贝中更新没有冲突的部分,有冲突的部分将会显示出来让用户选择更新策略;只要是能连通的两台主机,就可以运行Unison,可以直接使用socket连接或安全的ssh连接方式,对带宽的要求不高,使用类似rsync的压缩传输协议。

3、 环境准备如下:

4、安装ocaml

下载:

wget http://caml.inria.fr/pub/distrib/ocaml-4.00/ocaml-4.00.1.tar.gz

解压、安装:

# tar -zxvf ocaml-4.00..tar.gz
# cd ocaml-4.00.
# ./configure
# make world opt
# make install

注意:请下载此版本的ocaml,高版本安装时可能会出错。

5、安装unison

缺少此安装包时下面make步骤会报错:

# yum -y install ctags-etags
# wget http://www.seas.upenn.edu/~bcpierce/unison//download/releases/stable/unison-2.48.4.tar.gz
# mkdir unison-2.48. && cd unison-2.48.
# tar -zxvf /root/unison-2.48..tar.gz
# cd src
# make UISTYLE=text THREADS=true
# cp unison /usr/local/bin/
# unison -version # 有版本信息出现,则安装成功

6、安装inotify

下载链接:http://mirrors.aliyun.com/repo/epel-6.repo
  • 以上安装操作两台机器都需要操作!

  • 到此需要的软件就安装完成了!

7、配置双机ssh信任

在web1上生成密钥,不输入私钥密码:

步骤如下:

[root@web1 ]# ssh-keygen
----- 信息省略,回车三下 --------
[root@ web1 ]# cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys
[root@ web1 ]# chmod ~/.ssh
[root@ web1 ]# chmod ~/.ssh/authorized_keys
[root@ web1 ]# rsync -avz /root/.ssh/authorized_keys
[root@ web1 ]# rsync -avz /root/.ssh/authorized_keys root@192.168.239.62:/root/.ssh/authorized_keys

web2同理!

8、配置双机web目录同步

8.1、Web1上操作:

[root@web1 ]# mkdir -p /root/.unison/
[root@web1 ]# vim /root/.unison/default.prf
---------------- 配置信息如下 ------------------

#Unison preferences file

root = /opt/html/
root = ssh://root@192.168.239.62/ /opt/html/
#force =
#ignore =
batch = true
maxthreads =
#repeat =
#retry =
owner = true
group = true
perms = -
fastcheck = false
rsync = false
sshargs = -C
xferbycopying = true
log = true
logfile = /root/.unison/unison.log
----------------------------------------

8.2、Web2上操作:

[root@web2 ]# mkdir -p /root/.unison/
[root@web2 ]# vim /root/.unison/default.prf
---------------- 配置信息如下 ------------------

#Unison preferences file

root = /opt/html/
root = ssh://root@192.168.239.61/ /opt/html/
#force =
#ignore =
batch = true
maxthreads =
#repeat =
#retry =
owner = true
group = true
perms = -
fastcheck = false
rsync = false
sshargs = -C
xferbycopying = true
log = true
logfile = /root/.unison/unison.log
----------------------------------------

9、在两台机器都添加如下脚本,并使用nohup方式运行。

[root@web1 ~]# mkdir /script
[root@web1 ~]# vim /script/inotify.sh
------------- 脚本信息如下 -------------

#/bin/bash

src="/opt/html/"
/usr/bin/inotifywait -mrq -e create,delete,modify,move $src | while read line; do
/usr/local/bin/unison
echo -n "$(date +%F-%T) $line" >> /var/log/inotify.log
done
--------------------------------------------------------------------------
[root@web1 ~]# chmod +x /script/inotify.sh                               

10、两台机器都需要建立日志目录

如果/var/log/inotify目录没有则需要手工创建,用来存放inotify的日志。

[root@web1 ]# mkdir /var/log/inotify

[root@web2 ~]# mkdir /var/log/inotify

11、将两台机器脚本使用nohup后台运行

如果错误信息输出到日志文件:

[root@web1 ~]# nohup /script/inotify.sh >/dev/null >log &                      

如果错误信息也不想要的话:

[root@web1 ~]# nohup /script/inotify.sh >/dev/null >& &     

12、最后测试

  • 重启电脑,测试二台服务器中/opt/http/的内容是否能同步
  • 不重启电脑,手动执行脚本也可以测试
  • 在其中一台/opt/http/目录中添加,或修改,或删除文件的时候,可以看到脚本状态,同时另一台服务器也应该会跟随操作。

unison+inotify的Web目录同步方案的更多相关文章

  1. 两台linux主机使用unison + inotify实现web文件夹同步

    两台服务器同步数据 unison 是一款跨平台的文件同步对象,不仅支撑本地对本地同步,也支持通过SSH,RSH和Socket 等网络协议进行同步. unison 支持双向同步,你可以同A同步到B ,也 ...

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

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

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

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

  4. 实现web数据同步的四种方式

    http://www.admin10000.com/document/6067.html 实现web数据同步的四种方式 1.nfs实现web数据共享 2.rsync +inotify实现web数据同步 ...

  5. linux下实现web数据同步的四种方式(性能比较)

    实现web数据同步的四种方式 ======================================= 1.nfs实现web数据共享2.rsync +inotify实现web数据同步3.rsyn ...

  6. windows,linux下SVN实现自动更新WEB目录

    通过SVN进行版本库管理,每次提交后,都要在SVN服务器更新最新上传的版本到WEB目录进行同步.操作比较烦琐,而且效率也低.使用SVN钩子脚本进行WEB目录同步,可很好的解决这方面的问题.由于测试机器 ...

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

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

  8. rsync unison+inotify双向实时同步

    rsync多线程同步 A:文件服务器 ip:10.10.1.10 B:备份服务器 ip:10.10.1.11 1.在B服务器上安装rsync软件 tar xzvf rsync-3.1.0.tar.gz ...

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

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

随机推荐

  1. LCA最近公共祖先(倍增版)

    倍增版LCA lac即最近公共祖先,u和v最近公共祖先就是两节点公用的祖先中深度最大的 比如 其中 lca(1,2)=4, lca(2,3)=4, lca(3,5)=1, lca(2,5)=4; 如何 ...

  2. Apriori算法思想和其python实现

    第十一章 使用Apriori算法进行关联分析 一.导语 "啤酒和尿布"问题属于经典的关联分析.在零售业,医药业等我们经常需要是要关联分析.我们之所以要使用关联分析,其目的是为了从大 ...

  3. SOFA 源码分析 — 泛化调用

    前言 通常 RPC 调用需要客户端使用服务端提供的接口,而具体的形式则是使用 jar 包,通过引用 jar 包获取接口的的具体信息,例如接口名称,方法名称,参数类型,返回值类型. 但也存在一些情况,例 ...

  4. Lintcode400 Maximum Gap solution 题解

    [题目描述] Given an unsorted array, find the maximum difference between the successive elements in its s ...

  5. servlet什么时候被实例化?【转】

    如果没有设置loadOnStartup,则第一次请求的时候实例化 分三种情况:loadOnStartup < 0 即负数的情况下,web容器启动的时候不做实例化处理,servlet首次被调用时做 ...

  6. 运算符优先级--C

    优先口决 括号成员第一; //括号运算符[]() 成员运算符. -> 全体单目第二; //所有的单目运算符比如++ -- +(正) -(负) 指针运算*& 乘除余三,加减四; //这个& ...

  7. Oracle数据库表分区

    一.Oracle数据库表分区概念和理解         1.1.已经存在的表没有方法可以直接转化为分区表.         1.2.不在分区字段上建立分区索引,在别的字段上建立索引相当于全局索引.效率 ...

  8. 由清除float原理到BFC

    关于浮动 设置为浮动的元素会脱离当前文档流,向左或向右移动直到边缘遇到另一个浮动元素或者到达边界.普通元素不会对齐造成影响. 浮动是把双刃剑,在给我们的布局带来便利的同时有一些缺点需要我们去解决.例如 ...

  9. python装饰器小计

    1.装饰器:本质是函数,是用来给其他函数添加附加扩展功能的函数,其返回值是一个函数(函数指针) 2.装饰器作用:不改变函数源代码和函数调用方式的前提下添加函数的附加功能. 3.装饰器储备知识点: A. ...

  10. Spring+Mybatis多数据源的一种实现方式,支持事务

    最近一个项目用到了多个数据库,所以需要实现动态切换数据源来查询数据,http://www.cnblogs.com/lzrabbit/p/3750803.html这篇文章让我受益匪浅,提供了一种自动切换 ...