unison+inotify
hostnamectl --static set-hostname tCentos
1.下载文件到/usr/local/src
ocaml
unison
inotify-tools
2.安装inotify-tools
cd /usr/local/src
tar zvxf inotify-tools-3.14.tar.gz
cd inotify-tools-3.14
./configure --prefix=/usr/local/inotify
make && make install
cd /usr/local/inotify/
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
3.安装ocaml
cd /usr/local/src
tar zvxf ocaml-4.02.3.tar.gz
cd ocaml-4.02.3
./configure
make world opt && make install
4.安装unison
yum install ctags-etags -y
cd /usr/local/src
tar zvxf unison-2.48.3.tar.gz
cd unison-2.48.3
make UISTYLE=text #THREADS=true STATIC=true 表示使用命令行方式,加入线程支持以静态模式编译
make install
cp unison /usr/local/bin (make install会提示错误,cp unison /usr/local/bin,复制即可)
5.服务器A生成的公钥传到服务器B上
ssh-keygen -t rsa #生成ssh的密钥对
scp ~/.ssh/id_rsa.pub 192.168.1.41:/root/.ssh/img_rsa.pub
#生成的密钥在家目录的ssh文件中,ssh文件为隐藏文件,通过scp复制到服务器B上
cat img_rsa.pub >> authorized_keys
#在服务器A上把服务器B传来的公钥文件改名并存放到ssh目录下
chmod 600 authorized_keys #给公钥文件改权限为600
systemctl restart sshd
#重启sshd服务
6.服务器B生成的公钥传到服务器A上
ssh-keygen -t rsa #生成ssh的密钥对
scp ~/.ssh/id_rsa.pub 192.168.1.40:/root/.ssh/img01_rsa.pub
#生成的密钥在家目录的ssh文件中,ssh文件为隐藏文件,通过scp复制到服务器B上
cat img01_rsa.pub >> authorized_keys
#在服务器A上把服务器B传来的公钥文件改名并存放到ssh目录下
chmod 600 authorized_keys #给公钥文件改权限为600
systemctl restart sshd
#重启sshd服务
7.服务器A的同步脚本
mkdir -p /web/htdocs
#/bin/bash
ipB="192.168.1.41"
srcA="/web/htdocs"
dstB="/website"
/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 2>&1
echo `date|cut -d " " -f 1-4` >> /var/log/inotify.log 2>&1
done
赋予执行权限
chmod +x /data/sera.sh
监控形式启动,可以查看文件变更状态
sh -x /data/sera.sh
执行脚本并做开机启动:
chmod +x /etc/rc.d/rc.local
echo "sh /data/sera.sh &" >> /etc/rc.d/rc.local
8.服务器B的同步脚本
mkdir -p /website
#/bin/bash
ipA="192.168.1.40"
srcB="/website"
dstA="/web/htdocs"
/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 " " -f 1-4` >> /var/log/inotify.log
done
赋予执行权限
chmod +x /data/serB.sh
监控形式启动,可以查看文件变更状态
sh -x /data/serB.sh
执行脚本并做开机启动:
chmod +x /etc/rc.d/rc.local
echo "sh /data/serB.sh &" >> /etc/rc.d/rc.local
#/bin/bash
UNISON=`ps -ef |grep -v grep|grep -c inotifywait`
if [ ${UNISON} -lt 1 ]
then
ip2="unison@192.168.1.6:2222"
src2="/var/web2/"
dst2="/var/web1/"
/usr/local/bin/inotifywait -mrq -e create,delete,modify,move $src2 | while read line
do
/usr/local/bin/unison -batch -sshargs "-i /home/unison/.ssh/id_rsa" $src2 ssh://$ip2
/$dst2
echo -n "$line " >> /var/umelook-log/inotify/inotify$(date +%u).log
echo ` date +%F\ %T` >> /var/umelook-log/inotify/inotify$(date +%u).log
done
fi
ps -ef |grep -v grep|grep -c inotifywait
另外,原来官方的rc-local.service有点问题,把命令写入/etc/rc.local,然后启动rc-local.service会出问题,根本启动不了。后来偶在上面提供的网页里找到了解决办法。如下:修改/etc/systemd/system/rc-local.service
[Unit]
Description=/etc/rc.local Compatibility
ConditionPathExists=/etc/rc.local
[Service]
Type=forking
ExecStart=/etc/rc.local start
TimeoutSec=0
StandardOutput=tty
RemainAfterExit=yes
SysVStartPriority=99
[Install]
WantedBy=multi-user.target
新建/etc/rc.local文件
如果是简单的自定义命令,可写入/etc/rc.local,用上面的方法来处理。
#/bin/bash
srcB=/website/
dstA=/web/htdocs/
ipA=192.168.1.40
/usr/local/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 " " -f 1-4` >> /var/log/inotify.log
done
echo ` date +%F\ %T` >> /var/umelook-log/inotify/inotify$(date +%u).log
unison+inotify的更多相关文章
- linux web服务器静态资源的处理 unison+inotify双向同步
linux web服务器静态资源的处理 unison+inotify双向同步 http://monkeyzhu.blog.51cto.com/5764358/1324391 简介 unison可以使两 ...
- unison + inotify 实现文件实时双向同步部署步骤
unison + inotify 实现文件实时双向同步部署步骤 一. Unison简介 Unison是Windows.Linux以及其他Unix平台下都可以使用的文件同步工具,它能使两个文件夹(本地或 ...
- 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的Web目录同步方案
1.在Linux下做WEB目录文件同步 一般有如下几种方式: ----------------------------------------------- 1) nfs实现web数据共享 ...
- unison+inotify 同步web代码并排除指定目录不同步
unison + inotify 实现web 数据双向同步 unison 是一款跨平台的文件同步对象,不仅支撑本地对本地同步,也支持通过SSH,RSH和Socket 等网络协议进行同步.unis ...
- unison+inotify实现文件双向自动同步
nfs适合存小图片和小文件,有一个致命的缺点,就是其中一台web服务挂掉之后,会直接导致web页面无法访问,动态的那种数据, 而且数据量很大的数据不适合nfs Unison是一款跨平台(window, ...
- unison+inotify实现数据双向同步
unison是一款跨windows/linux/MAC OS平台的文件同步工具,不仅支持本地对本地同步,也支持通过SSH.RSH和Socket等网络协议进行同步.更棒的是,unison支持双向同步操作 ...
- 两台linux主机使用unison + inotify实现web文件夹同步
两台服务器同步数据 unison 是一款跨平台的文件同步对象,不仅支撑本地对本地同步,也支持通过SSH,RSH和Socket 等网络协议进行同步. unison 支持双向同步,你可以同A同步到B ,也 ...
- 实现web数据同步的四种方式
http://www.admin10000.com/document/6067.html 实现web数据同步的四种方式 1.nfs实现web数据共享 2.rsync +inotify实现web数据同步 ...
随机推荐
- html JS 打开本地程序及文件
在网页打开本地应用程序示例: 一.在本地注册表自定义协议:以自定义调用Viso为例 1.在HKEY_CLASSES_ROOT下添加项ZVISIO. 2.修改ZVISIO项下的"(默认)&qu ...
- C语言中,头文件和源文件的关系(转)
简单的说其实要理解C文件与头文件(即.h)有什么不同之处,首先需要弄明白编译器的工作过程,一般说来编译器会做以下几个过程: 1.预处理阶段 2.词法与语法分析阶段 3.编译阶段,首先编译成纯汇编语句, ...
- javascript中的预编译问题
Js作为脚本语言,可以不需要编译直接运行,但遇到类似变量或者函数同名,预编译方面的知识可以帮助我们更好解决问题. 示例: 这是一段js中普通的函数调用代码 <script>1. // ...
- Html和CSS布局技巧
单列布局水平居中 水平居中的页面布局中最为常见的一种布局形式,多出现于标题,以及内容区域的组织形式,下面介绍四种实现水平居中的方法(注:下面各个实例中实现的是child元素的对齐操作,child元素的 ...
- C++ 系列:C++ 基础 002
Copyright © 1900-2016, NORYES, All Rights Reserved. http://www.cnblogs.com/noryes/ 欢迎转载,请保留此版权声明. -- ...
- Normalization
In creating a database, normalization is the process of organizing it into tables in such a way that ...
- C# 通过模拟http请求来调用soap、wsdl
C#调用webservice的方法很多,我说的这种通过http请求模拟来调用的方式是为了解决C#调用java的远程API出现各种不兼容问题. 由于远程API不在我们的控制下,我们只能修改本地的调用代码 ...
- Python的多类型传值和冗余参数
多类型传值(向函数中传递元组和字典) 1 向函数中传递元组 def func(x,y): print x+y 调用这个函数的时候,我们只需要传入两个变量就可以了,但是比如我有一个元组t = ( ...
- maven权威指南学习笔记(四)—— maven生命周期(lifecycle)
定义: 生命周期是包含在一个项目构建中的一系列有序的阶段 举个例子来说就是maven 对一个工程进行: 验证(validate) -- 编译源码(compile) -- 编译测试源码(test-com ...
- Fiddler问题 - creation of the root certificate was not successful
打开cmd执行命令. d: cd D:\soft\Fiddler2 makecert.exe -r -ss my -n "CN=DO_NOT_TRUST_FiddlerRoot, O=DO_ ...