Linux(centos5.0+)unison+inotify-tools触发式双向自动同步

192.168.1.11是server1,

192.168.1.22是server2。

【1】安装inotify-tools

各大linux发行版本都有inotify-tools软件包,建议通过yum方式安装:

[[email protected] ~]#yum install inotify-tools

[[email protected] ~]#yum install inotify-tools

******说明开始*********************************

郁闷的是!公司服务器上竟然没有找到inotify-tools这个包!

于是只能网上搜包,编译安装了:

[[email protected] ~]# wget http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz

[[email protected] ~]# tar xzvf inotify-tools-3.14.tar.gz

[[email protected] ~]# cd inotify-tools-3.14

[[email protected] ~]# ./configure

[[email protected] ~]# make

[[email protected] ~]# make install

[[email protected] ~]# wget http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz

[[email protected] ~]# tar xzvf inotify-tools-3.14.tar.gz

[[email protected] ~]# cd inotify-tools-3.14

[[email protected] ~]# ./configure

[[email protected] ~]# make

[[email protected] ~]# make install

******说明结束*********************************

【2】安装unison

通过源码包编译安装unison,需要Objective Caml compiler。

1)安装ocaml到/usr/local/src(建议版本3.0以上,安装路径可自己定义)

[[email protected] ~]# cd /usr/local/src

[[email protected] src]# wget http://caml.inria.fr/pub/distrib/ocaml-3.12/ocaml-3.12.1.tar.gz

[[email protected] src]# tar -zxvf ocaml-3.12.1.tar.gz

[[email protected] src]# cd ocaml-3.12.1

[[email protected] ocaml-3.12.0]# ./configure

[[email protected] ocaml-3.12.0]# make world opt

[[email protected] ocaml-3.12.0]# make install

2)编译安装unison(unison版本可以自行去网上下载)

[[email protected] src]# wget http://www.seas.upenn.edu/~bcpierce/unison//download/releases/stable/unison-2.40.63.tar.gz

[[email protected] src]# tar -xzvf unison-2.40.63.tar.gz

[[email protected] src]# cd unison-2.40.63

[[email protected] unison-2.40.63]# make UISTYLE=text

[[email protected] unison-2.40.63]# make install

******说明开始*********************************

执行make install过程中,可能会出现以下错误提示:

mv: cannot stat ‘/root/bin//unison‘: No such file or directory

make: [doinstall] Error 1 (ignored)

cp unison /root/bin/

cp: cannot create regular file ‘/root/bin/‘: Is a directory

make: *** [doinstall] Error 1

用百度在线翻译了一下,大致意思是:找不到/root/bin目录。

因为unison默认是将unison文件拷贝到/root/bin目录,但Linux默认没有该目录,所以我们需要将生成的可执行文件unison复制到系统PATH目录。

[[email protected] unison-2.40.63]# whereis $PATH  //查看系统PATH目录

bin: /usr/local/bin

[[email protected] unison-2.40.63]# cp unison /usr/local/bin

******说明结束*********************************

3)将可执行文件unison上传到server2主机

[[email protected] unison-2.40.63]# scp unison [email protected]:/root/

******说明开始*********************************

远程连接可能会出现:

Are you sure you want to continue connecting (yes/no)?

别犹豫,敲个 yes 吧,然后出现:

[email protected]‘s password:

别发呆,输入server2的密码吧,然后出现:

unison               100% 1473KB   36k/s   00:40

说明unison已经成功上传至server2了。

双机没配置信任key之前,你远程连接都需要输入密码滴!

******说明结束*********************************

4)登陆server2主机,将unison复制到PATH目录

[[email protected] ~]# cp unison /usr/local/bin

【3】配置双机信任(ssh key)

1)server1创建key

[[email protected] ~]# ssh-keygen -t rsa

******说明开始*********************************

是不是出现了好多英文句子,看不懂不怪你,我也看不懂,哈哈!

用百度在线翻译一下,大致意思是:什么公钥,密钥存放位置了,是否需要私钥密码了之类的。

别理会,敲回车就成!之后,将生成一对密钥,id_rsa(私钥文件)和id_rsa.pub(公钥文件),保存在/root/.ssh/目录下。

******说明结束*********************************

2)将server1的公钥添加到server2的authorized_keys文件

--将钥文件传到server2主机

[[email protected] ~]# scp ~/.ssh/id_rsa.pub [email protected]:/root

******说明开始*********************************

远程连接可能会出现:

Are you sure you want to continue connecting (yes/no)?

别犹豫,敲个 yes 吧,然后出现:

[email protected]‘s password:

别发呆,输入server2的密码吧,然后出现:

id_rsa.pub                 100%  394     0.4KB/s

说明公钥已经成功上传至server2了。

双机没配置信任key之前,远程连接都需要输入密码滴!

******说明结束*********************************

--登录server2,将公钥添加到authorized_keys文件中

[[email protected] ~]# mkdir .ssh

[[email protected] ~]# chmod 700 .ssh

[[email protected] ~]# mv ~/id_rsa.pub ~/.ssh/authorized_keys

[[email protected] ~]# chmod 600 ~/.ssh/authorized_keys

3)server2创建key

[[email protected] ~]# ssh-keygen -t rsa

******此处说明参看上面**************************

4)将server2的公钥添加到server1的authorized_keys文件

--将钥文件传到server1主机

[[email protected] ~]# scp ~/.ssh/id_rsa.pub [email protected]:/root

******此处说明参看server1**************************

--登录server1,将公钥添加到authorized_keys文件中

[[email protected] ~]# mv ~/id_rsa.pub ~/.ssh/authorized_keys

******说明开始*********************************

此处不用新建.ssh文件夹,不用chmod权限了?

server1当时创建key时候,.ssh等文件夹就已经存在了!

******说明结束*********************************

5)重启server1,server2的ssh服务

[[email protected] ~]# /etc/init.d/sshd restart

[[email protected] ~]# /etc/init.d/sshd restart

【4】测试是否配置成功

[[email protected] ~]# ssh [email protected]  date

[[email protected] ~]# ssh [email protected]  date

不用提示输入密码即可互相得到对方的时间,就证明配置成功了。

【5】使用说明

在任意一个server机上执行unison命令:

[[email protected] ~]# unison -bath /home/server1image/ ssh://192.168.1.22//home/server2image/

【6】创建.sh脚本来执行同步

1)server1上创建脚本unison2.sh:

#/bin/bash

ip2="192.168.1.22"

src2="/home/server1image/"

dst2="/home/server2image/"

/usr/bin/inotifywait -mrq -e create,delete,modify,move $src2 | while read line; do

/usr/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

2)server2上创建脚本unison1.sh:

#/bin/bash

ip1="192.168.1.11"

src1="/home/server2image/"

dst1="/home/server1image/"

/usr/bin/inotifywait -mrq -e create,delete,modify,move $src1 | while read line; do

/usr/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

【7】执行.sh脚本

server1,server2各自执行.sh即可。

时间: 2024-11-08 21:35:37

Linux(centos5.0+)unison+inotify-tools触发式双向自动同步的相关文章

unison+inotify-tools触发式双向自动同步

双向实时数据同步部署 首先添加服务器ssh信任,即免秘钥登陆 Web1:192.168.10.36 Web2:192.168.10.37 分别在web1和web2上执行以下命令 mkdir ~/.ssh chmod 700 ~/.ssh 生成RSA密钥 ssh-keygen -t rsa  (然后连续三次回车) 添加密钥到授权密钥文件中 cd ~/.ssh ssh "-p 22" 192.168.10.36 cat /root/.ssh/id_rsa.pub >> auth

linux系统中rsync+inotify实现服务器之间文件实时同步

最近需要对服务器上的文件实施动态备份,我又不想每次都手动来进行备份,在网上找了挺多资料,发现使用rsync就可以实现,如果想要实现实时同步,还可以使用rsync+inotify组合,本文就是以组合方式来完成的. 先介绍一下rsync与inotify. 1.rsync 与传统的cp.tar备份方式相比,rsync具有安全性高.备份迅速.支持增量备份等优点,通过rsync可以解决对实时性要求不高的数据备份需求,例如定期的备份文件服务器数据到远端服务器,对本地磁盘定期做数据镜像等.随着应用系统规模的不

rsync+inotify实现触发式备份

知识部分rsync简介:是一个开源的快速备份工具,可以在不同主机之间间相同步整个目录树,支持增量备份,保持链接及权限,且采用优化的同步算法,传输前执行压缩,因此非常适用于异地备份.镜像服务器等应用.在远程同步任务中,负责发起rsync同步的客户机成为发起端,而负责响应同步任务的服务器成为同步源.发起端在发起同步任务的时候对同步源中的同步目录需具有读取权限,这样才能实现同步.而这种同步被称为下行同步,即以rsync为源,客户机为发起端.inotify简介:inotify是linux内核从2.6.1

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

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

使用rsync服务通过inotify实现触发式自动同步数据

  实验拓扑:HK36(Server 192.168.2.102)====HK46(Client 192.168.2.190)   实验要求:对HK46 /data/目录备份到HK36的/backup/下 (1)      rsync服务依赖于xinetd超级服务管理,首先安装xinetd服务 [[email protected] ~]# yum -y install xinetd (2)      进入rsync修改配置文件信息,将disable = yes改为no,重启服务,查看873端口是

通过rsync+inotify-tools+ssh实现触发式远程实时同步

文件的同步镜像在很多地方都需要用到,因此rsync这款免费软件得到了广泛的应用,包括在Windows平台上,都已经有了支持rsync的"cwRsyncServer".但是,我们一般都是通过结合crontab计划任务来实现文件同步的,这样做的缺点是效率低,不能做到实时同步.现在,在Linux平台下我们可以利用2.6内核的inotify监控文件系统机制,通过inotify-tools来实现实时同步了.具体操作如下: 1.安装所需软件目前各大Linux发行版本都已经具有了rsync与inot

rsync+inotify 实现文件夹的自动同步备份

1 配置好rsync 服务器,客户端,见上一篇 192.168.1.10web服务器中/www  备份到 rsync192.168.1.11 /tmp/backup 2 下载安装inotify wget http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz 解压 ./configure   make make install 3 简介 inotify-tools提供的两个命令行工具: inoti

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. 背景 最近需要上线一个公司展厅项目,项目中主要是后台图片管理.因此它基本不会出

linux下rsync+inotify实现服务器之间文件实时同步

先介绍一下rsync与inotify. 1.rsync 与传统的cp.tar备份方式相比,rsync具有安全性高.备份迅速.支持增量备份等优点,通过rsync可以解决对实时性要求不高的数据备份需求,例如定期的备份文件服务器数据到远端服务器,对本地磁盘定期做数据镜像等.随着应用系统规模的不断扩大,对数据的安全性和可靠性也提出的更好的要求,rsync在高端业务系统中也逐渐暴露出了很多不足,首先,rsync同步数据时,需要扫描所有文件后进行比对,进行差量传输.如果文件数量达到了百万甚至千万量级,扫描所