2019独角兽企业重金招聘Python工程师标准>>>

在网上搜寻了很多方案,在liux下做文件同步,有如下几种方式:

1、nfs实现web数据共享
2、rsync +inotify实现web数据同步
3、rsync+sersync更快更节约资源实现web数据同步
4、unison+inotify实现web数据双向同步

在这里详细介绍第四种方案,前几种都有些各自的不足。只有第四种方案支持双向实时同步,且当其中一台服务器宕机,也不会影响web的访问。(ps:之前一直喜欢nfs,配置非常简单,但是其有个致命的缺点就是其中一台web服务挂掉之后,会直接导致web页面无法访问)。

环境部署,有如下两台服务器需要做双向同步

192.168.10.1是server1,

192.168.10.2是server2

第一步,保证两台服务器之间可以通过ssh无密码访问,操作如下(这里以root用户为例):

分别在server1和server2下,创建秘钥

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

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

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

chmod 600 /root/.ssh/authorized_keys
在服务器server2上操作
chmod 600 /root/.ssh/authorized_keys
分别在两台机器上执行如下测试
ssh -p 22 192.168.10.1 date
ssh -p 22 192.168.10.2 date

至此用户授权完成。

第二步,软件安装,server1和server2都得安装

安装unison
首先安装ocaml,版本至少为3.07或更高
下载地址:http://caml.inria.fr/pub/distrib/ocaml-3.10/
tar xf ocaml-3.10.2.tar.gz
cd ocaml-3.10.2
./configure
make world opt
make install
cd ..

安装unison

下载地址:http://www.seas.upenn.edu/~bcpierce/unison//download/releases/unison-2.13.16/
tar xvf unison-2.13.16.tar.gz
cd unison-2.13.16
make UISTYLE=text THREADS=true STATIC=true
cp unison /usr/local/bin
cd ..

安装inotify

下载地址:http://inotify-tools.sourceforge.net
tar xvf inotify-tools-3.14.tar.gz
cd inotify-tools-3.14
./configure
make
make install
cd ..

到此所需的软件都已安装完毕,可以在server1服务器上执行这个命令,来查看两台服务器之间是否可以同步文件,unison -batch /home/server1/ ssh://192.168.10.2//home/server2 ,如果这时候抱如下错误:

/usr/local/bin/inotifywait: error while loading shared libraries: libinotify

可以执行下这个命令:

ln -sv /usr/local/lib/libinotify* /usr/lib/

执行成功后,看目录下的文件是否同步。

第三步,创建.sh脚本来执行同步

1)server1上创建脚本/root/inotify.sh(chmod a+x /root/inotify.sh):

#/bin/bash
ip2="192.168.10.2"
src2="/home/server1/"
dst2="/home/server2/"
/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

1)server2上创建脚本/root/inotify.sh(chmod a+x /root/inotify.sh):

#/bin/bash
ip1="192.168.10.1"
src1="/home/server2/"
dst1="/home/server1/"
/usr/local/bin/inotifywait -mrq -e create,delete,modify,move $src1 | while read line; do
/usr/local/bin/unison -batch $src1 ssh://$ip1/$dst1
echo -n "$line " >> /var/log/inotify.log
echo `date | cut -d " " -f1-4` >> /var/log/inotify.log
done

最后分别在server1和server2上执行上面两个脚本,这样两台服务器的目录会保持相互实时同步了!!!

转载于:https://my.oschina.net/luckyperson2012/blog/362018

inotify+unison双向同步环境部署相关推荐

  1. 金仓KFS数据双向同步场景部署

    KFS数据双向同步场景部署 数据双向同步场景是两端数据库互为源端和目标端,A端有新的增量数据会同步到B端,B端有增量数据也会同步到A端,并且两端之前有防回环机制,防止A端增量数据同步到B端后再同步到A ...

  2. inotify+rsync实时同步服务部署

    环境:服务端 192.168.6.30(安装 rsync) /data/share :客户端 192.168.6.38(安装 inotufy+rsync)/nfsbackup 主流程:https:// ...

  3. Linux系统间文件双向同步搭建Unison版

    一.Unison简介 Unison是Windows.Linux以及其他Unix平台下都可以使用的文件同步工具,它能使两个文件夹(本地或网络上的)保持内容的一致.Unison拥有与其它一些同步工具或文件 ...

  4. CentOS7部署文件双向同步工具(unison)

    1,简介 Unison是一款跨windows/Linux/MAC OS平台的文件同步工具,不仅支持本地对本地同步,也支持通过SSH,RSH和Socket等网络协议与完程主机进行同步,最主要的是,Uni ...

  5. Linux使用inotify+unison实现数据、静态资源双向(多向)实时同步

    在特定的情况下需要在多个Linux服务器上做指定文件文件夹的实时同步,一个服务器修改了文件其它服务器的文件能保持一致.本博客非常适用于需要在两台.多台linux服务器做静态资源同步的同学,整个过程简单 ...

  6. Centos下部署NTP时间服务器同步环境

    Centos下部署NTP时间服务器同步环境记录 我是在购买的3A平台购买的服务器进行测试. 服务端部署 安装所需软件包 [root@test ~]# yum -y install ntp ntpdat ...

  7. EMQTT环境部署配置双向认证

    EMQTT环境部署&&配置双向认证 EMQT服务部署 Ubuntu安装EMQTT Docker 搭建EMQ服务 EMQ双向认证配置 EMQ X Broker 是基于高并发的 Erlan ...

  8. rsync+inotify实现实时同步案例--转

    转自:http://chocolee.blog.51cto.com/8158455/1400596 随着应用系统规模的不断扩大,对数据的安全性和可靠性也提出的更好的要求,rsync在高端业务系统中也逐 ...

  9. rsync+inotify实现实时同步案例

    随着应用系统规模的不断扩大,对数据的安全性和可靠性也提出的更好的要求,rsync在高端业务系统中也逐渐暴露出了很多不足,首先,rsync同步数据时,需要扫描所有文件后进行比对,进行差量传输.如果文件数 ...

  10. rsync+inotify实现实时同步案例详解

    rsync+inotify实现实时同步案例详解 转自:http://chocolee.blog.51cto.com/8158455/1400596 随着应用系统规模的不断扩大,对数据的安全性和可靠性也 ...

最新文章

  1. Java项目:就业管理系统设计和实现(java+springboot+ssm)
  2. R可视化包ggplot2改变图例(Legend)的位置实战
  3. 【字符串哈希】【哈希表】Aizu - 1370 - Hidden Anagrams
  4. PHPUnit实践二(生命周期)
  5. orcale 日期转字符串 去掉0_C# 基础知识系列- 13 常见类库介绍(二)日期时间类...
  6. source insight快捷键及使用技巧
  7. 如何用MediaCapture解决二维码扫描问题
  8. 计算机底层书籍三件套--大话计算机
  9. C# string.Format谨慎使用
  10. [转]vb socket通信(TCP/UDP)一对一、多对一
  11. idea中常用的快捷键以及一些奇淫技巧 , 加快我们的开发效率
  12. python删除数组元素_python:从数组列表中删除一系列数字
  13. MySQL索引(1)
  14. 投简历没回音?你没写到点子上,HR当然不看
  15. TikTok数据分析工具介绍
  16. DB2 SqlCode对照表
  17. android oppo 模拟器,小姚Android构建VIVO华为魅族OPPO小米联想手游Android模拟器
  18. 把计算机从桌面删除了怎么办,我把“我的电脑”在桌面上的快捷方式删除了 怎么还原...
  19. java根据日期计算农历_Java给定公历日期计算相应农历/阴历日期
  20. 兔子繁殖问题(C语言)

热门文章

  1. Db2干净卸载Linux,在Linux/Aix环境下完全卸载DB2
  2. micropython支持stm32型号_轻松几步实现在STM32上运行FreeRTOS任务
  3. 频谱感知3:合作频谱检测中的硬合并与软合并
  4. 【HDU - 4794】Arnold【斐波那契数列循环节】
  5. 大学数学实验习题--统计推断 (附答案)
  6. java mysql备份_java调用mysql服务做备份与恢复
  7. chrome vue 未响应_分享几个宝藏级Vue管理后台框架 必须收藏
  8. [UNIX]The UNIXHATERS Handbook
  9. 【python 类】【部分转发】设计模式 -- 责任链模式 (类之间的联动)
  10. windows mysql 和linux mysql解决乱码问题