东莞市盛裕绒艺玩具有限公司

东莞市盛裕绒艺玩具有限公司

亚搏在线登录

13922952774
联系方式
全国服务热线: 13922952774

咨询热线:15304378574
联系人:赵富燕
地址:河北省石家庄市红旗南大街566号

unison+inotify的Web目录同步方案

来源:亚搏在线登录   发布时间:2019-06-26   点击量:352

 

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.1.tar.gz# cd ocaml-4.00.1# ./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.4 && cd unison-2.48.4# tar -zxvf /root/unison-2.48.4.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 700 ~/.ssh[root@ web1 ]# chmod 600 ~/.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_keysweb2同理!

8、配置双机web目录同步

8.1、Web1上操作:

[root@web1 ]# mkdir -p /root/.unison/[root@web1 ]# vim /root/.unison/default.prf

---------------- 配置信息如下 ------------------#Unison preferences fileroot = /opt/html/root = ssh://root@192.168.239.62/ /opt/html/#force =#ignore =batch = truemaxthreads = 300#repeat = 1#retry = 3owner = truegroup = trueperms = -1fastcheck = falsersync = falsesshargs = -Cxferbycopying = truelog = truelogfile = /root/.unison/unison.log----------------------------------------

8.2、Web2上操作:

[root@web2 ]# mkdir -p /root/.unison/[root@web2 ]# vim /root/.unison/default.prf

---------------- 配置信息如下 ------------------#Unison preferences fileroot = /opt/html/root = ssh://root@192.168.239.61/ /opt/html/#force =#ignore =batch = truemaxthreads = 300#repeat = 1#retry = 3owner = truegroup = trueperms = -1fastcheck = falsersync = falsesshargs = -Cxferbycopying = truelog = truelogfile = /root/.unison/unison.log----------------------------------------

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

[root@web1 ~]# mkdir /script[root@web1 ~]# vim /script/inotify.sh

------------- 脚本信息如下 -------------#/bin/bashsrc="/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.logdone--------------------------------------------------------------------------

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

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

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

11、两台机器都需要添加定时任务

[root@web1 ~]# crontab -e

--------- 计划任务如下 ----------* * * * * nohup /script/inotify.sh 实时使用nohup执行此脚本,实现实时同步数据

12、最后测试

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

相关产品

COPYRIGHTS©2017 亚搏在线登录 ALL RIGHTS RESERVED 备案号:352