unison+inotify的Web目录同步方案
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目录同步方案的更多相关文章
- 两台linux主机使用unison + inotify实现web文件夹同步
两台服务器同步数据 unison 是一款跨平台的文件同步对象,不仅支撑本地对本地同步,也支持通过SSH,RSH和Socket 等网络协议进行同步. unison 支持双向同步,你可以同A同步到B ,也 ...
- unison+inotify实现数据双向同步
unison是一款跨windows/linux/MAC OS平台的文件同步工具,不仅支持本地对本地同步,也支持通过SSH.RSH和Socket等网络协议进行同步.更棒的是,unison支持双向同步操作 ...
- unison+inotify 同步web代码并排除指定目录不同步
unison + inotify 实现web 数据双向同步 unison 是一款跨平台的文件同步对象,不仅支撑本地对本地同步,也支持通过SSH,RSH和Socket 等网络协议进行同步.unis ...
- 实现web数据同步的四种方式
http://www.admin10000.com/document/6067.html 实现web数据同步的四种方式 1.nfs实现web数据共享 2.rsync +inotify实现web数据同步 ...
- linux下实现web数据同步的四种方式(性能比较)
实现web数据同步的四种方式 ======================================= 1.nfs实现web数据共享2.rsync +inotify实现web数据同步3.rsyn ...
- windows,linux下SVN实现自动更新WEB目录
通过SVN进行版本库管理,每次提交后,都要在SVN服务器更新最新上传的版本到WEB目录进行同步.操作比较烦琐,而且效率也低.使用SVN钩子脚本进行WEB目录同步,可很好的解决这方面的问题.由于测试机器 ...
- linux web服务器静态资源的处理 unison+inotify双向同步
linux web服务器静态资源的处理 unison+inotify双向同步 http://monkeyzhu.blog.51cto.com/5764358/1324391 简介 unison可以使两 ...
- 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 ...
- unison + inotify 实现文件实时双向同步部署步骤
unison + inotify 实现文件实时双向同步部署步骤 一. Unison简介 Unison是Windows.Linux以及其他Unix平台下都可以使用的文件同步工具,它能使两个文件夹(本地或 ...
随机推荐
- Using SSH and SFTP in Mac OS X
http://answers.stat.ucla.edu/groups/answers/wiki/7a848/ SH and SFTP are command line applications av ...
- Manacher算法解析
Manacher算法 Manachar算法主要是处理字符串中关于回文串的问题的,它可以在 O(n) 的时间处理出以字符串中每一个字符为中心的回文串半径,由于将原字符串处理成两倍长度的新串,在每两个字符 ...
- Java 包装类笔记
@(JDK)[包装类] Java 包装类笔记 当需要使用到集合的时候,如果是基础数据类型,需要转换为包装类,再使用,在JDK1.5之前,每次使用的时候,都需要手动转换为包装类(称为装箱),然后在使用的 ...
- 基于Python的数据分析(1):配置安装环境
数据分析是一个历史久远的东西,但是直到近代微型计算机的普及,数据分析的价值才得到大家的重视.到了今天,数据分析已经成为企业生产运维的一个核心组成部分. 据我自己做数据分析的经验来看,目前数据分析按照使 ...
- .NET之Dapper框架运用
Dapper框架 1.项目引用Dapper的Nuget程序包; 2.配置链接类 using System; using System.Collections.Generic; using System ...
- Python_自定义栈
customStack.py '''栈:是一种运算受限的线性表,其特点在于仅允许在一端进行元素的插入和删除操作,最后入栈的最先出栈,而最先入栈的元素最后出栈''' s = [] s.append(3) ...
- eclipse springmvc+Thymeleaf
修改pom.xml引入Thymeleaf相关包: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi=& ...
- 使用input file上传文件中onChange事件只触发一次问题
每次上传文件的时候,都会将当前的文件路径保存至$event.target.value中,当第二次选择文件时,由于两次$event.target.value相同,所以不会触发change事件. 解决方案 ...
- maven工程,java代码加载resources下面资源文件的路径
1 通过类加载器加载器, 1. URL resource = TestMain.class.getResource("/18500228040.txt");File file = ...
- PAT1040:Longest Symmetric String
1040. Longest Symmetric String (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, ...