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="[email protected]: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

时间: 2024-11-04 18:48:02

unison+inotify的相关文章

CentOS7.2下unison+inotify的Web目录同步方案

CentOS7.2下unison+inotify的Web目录同步方案 学习 unison CentOS7.2下unison+inotify的Web目录同步方案 1. 背景 2. Unison简介 3. 环境准备 4. 安装Objective Caml compiler 5. 安装unison 6. 安装inotify 7. 配置双机ssh信任 8. unison的使用 9. 配置双机web目录同步 10. 总结 1. 背景 最近需要上线一个公司展厅项目,项目中主要是后台图片管理.因此它基本不会出

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 cd rsync-3.1.0 ./configure make make install 2.配置双机ssh信任 在两台服务器的root目录下创建.ssh目录并设置正确的权限 mkdir ~/.ssh chmod 700 ~/.ssh 使用ssh-keygen命令生成SSH协议的RSA密钥 ssh

利用unison+inotify 实现数据双向实时同步

利用unison+inotify 实现数据双向实时同步 环境:Centos 6.5 64位 server1 :192.168.1.201 server2 :192.168.1.250 需求软件:ocaml unison inotify 我这里全是使用yum安装的,若是喜欢使用源码编译安装的可以官网下载源码包. yum install ocaml unison inotify 第一步:保证两台服务器之间可以通过ssh无密码访问,为了安全,需要创建一个普通用户: 两边执行的步骤一样: useradd

unison+inotify实现数据实时双向同步

1.unison简介 Unison是windows和unix平台下都可以使用的文件同步工具,它能使两个文件夹(本地或网络上的)保持内容的一致,也支持经由过程SSH.RSH和Socket同步支持双向同步.Unison有文字界面和图形界面,这里只介绍如何在文字界面下使用. unison拥有其它一些同步工具或文件系统的相同特性,也有自己的特点,可以跨平台使用,对内核和用户权限没有特别要求,unison是双向的,它能自动处理两分拷贝中更新没有冲突的部分,有冲突的部分将会显示出来让用户选择更新策略:只要是

linux unison inotify 文件同步

default.prf #Unison preferences file root = /app/htdocs/project root = ssh://[email protected]//app/htdocs/project servercmd = /usr/local/bin/unison #force = true ignore = Path Application/Runtime ignore = Path Uploads/Home batch = true maxthreads =

采用 unison + inotify + rsync 实现文件触发式实时单向/双向/多向文件同步

项目有个新的需求,在多台APP服务器随机上传图片/资源文件,其中一台APP需要读取上传的图片,这样之前做的rsync+inotify的设置就无法应对了. 所以研究了下多向触发式实时同步机制,大家可以实验一下,如果有不妥的地方,请联系我修正,多谢了. 以下开始正题 一.     简介 Unison是Windows.Linux以及其他Unix平台下都可以使用的文件同步工具,它能使两个文件夹(本地或网络上的)保持内容的一致.Unison拥有与其它一些同步工具或文件系统的相同的特性,但也有自身的特点:

Unison+inotify实现两个主机目录之间的数据双向同步

软件包的下载地址:http://down.51cto.com/data/2219727 1 目的:实现两个主机上面的目录实时同步数据,Unison支撑双向同步操纵,你既可以从A同步到B,也可以从B同步到A,这些都不须要额外的设定. 2 实验环境:server1 :  192.168.127.129     server2 : 192.168.127.130 同步的目录都是/data/nest 3 安装部署:两个服务器安装 unison 和ocaml,inotify ##编译安装ocaml,uni

Centos6安装配置Unison+Inotify双向同步

Unison简介           Unison是windows和unix平台下都可以使用的文件同步工具,它能使两个文件夹(本地或网络上的)保持内容的一致.unison拥有其它一些同步工具或文件系统的相同特性,但也有自己的特点:                1.跨平台使用:                2.对内核和用户权限没有特别要求:                3. unison是双向的,它能自动处理两分拷贝中更新没有冲突的部分,有冲突的部分将会显示出来让用户选择更新策略:     

UNISON+inotify数据的双向实时同步

UNISON安装部署手册 操作系统:SUSE12 安装包:inotify-tools-3.13.tar.gz  ocaml-4.02.0.tar.gz   unison-2.48.4.tar.gz 主机:FH-UMP-PORTAL1  192.168.1.181 FH-UMP-PORTAL2  192.168.1.182 登录用户/密码:root/123456 配置文件:/root/.unison/default.prf Unison双向同步基本原理是:假如有A B两个文件夹,A文件夹把自己的改