rsync+inotify在linux下的多服务器同步

本次采用三台centos7服务器进行同步演示.

结构图如下

提示:三台服务器都先允许873端口的防火墙配置

[[email protected] rsync]# iptables -I INPUT -p tcp --dport 873 -j ACCEPT

一、源服务器配置

1、安装rsync

[[email protected] rsync-3.1.3]# cd /root/package/rsync-3.1.3/
[[email protected] rsync-3.1.3]# ./configure --prefix=/usr/rsync
[[email protected] rsync-3.1.3]#make
[[email protected] rsync-3.1.3]# make install
#在安装的bin目录下能找到rsync文件说明就安装成功,如下
[[email protected] bin]# cd /usr/rsync/bin
[[email protected] bin]# ll
-rwxr-xr-x. 1 root root 1680856 Mar  2 10:39 rsync

2、安装inotify

a,首先确认内核是否支持安装inotify,Linux内核低于2.6.13版本不支持安装。

[[email protected]~]# uname -r

2.6.32-573.el6.x86_64

b,确认 /proc/sys/fs/inotify/ 目录下是否有以下三个文件,存在才支持安装。

[[email protected]~]# ls -l  /proc/sys/fs/inotify/

-rw-r--r-- 1 root root 0 1月  21 13:03 max_queued_events

-rw-r--r-- 1 root root 0 1月  21 13:03 max_user_instances

-rw-r--r-- 1 root root 0 1月  21 13:03 max_user_watches

c,开始安装

[[email protected] bin]# cd /root/package/inotify-tools-3.14/
[[email protected] inotify-tools-3.14]# ./configure  --prefix=/usr/inotify
[[email protected] inotify-tools-3.14]#make
[[email protected] inotify-tools-3.14]#make install
#在安装路径bin目录下能找到notifywait和inotifywatch文件即标志inotify安装成功,如下:
[[email protected] bin]# cd /usr/inotify/bin
[[email protected] bin]# ll
-rwxr-xr-x. 1 root root 60728 Mar  2 11:21 inotifywait
-rwxr-xr-x. 1 root root 55096 Mar  2 11:21 inotifywatch

3、配置密码文件

该密码文件用于源与目标服务器同步文件时认证匹配,此次实验88源服务器与89目标服务器密码为host89,88源服务器与90目标服务器密码为host90。

[[email protected] /]# echo "host89" >/root/rsync/rsync1.passwd  #当然也可直接vi rsync1.passwd

[[email protected] /]# echo "host90" >/root/rsync/rsync2.passwd  #当然也可直接vi rsync2.passwd

同时要将上述两个密码文件权限设置为600,否则认证错误

[[email protected] rsync]# chmod 600 rsync1.passwd 

4、配置inotify监控+rsync同步shell脚本(合二为一)

vim /root/rsync/rsync1.sh

#!/bin/bash
host1=192.168.88.89
host2=192.168.88.90
src=/root/rsync/test/
des90=host90
des89=host89
user1=h89
user2=h90
/usr/inotify/bin/inotifywait -mrq --timefmt ‘%d/%m/%y %H:%M‘ --format ‘%T %w%f %e‘ -e modif
y,delete,create,attrib $src | while read files
do
/usr/rsync/bin/rsync -vzrtopg --delete --progress --password-file=/root/rsync/rsync1.passwd
 $src [email protected]$host1::$des89
/usr/rsync/bin/rsync -vzrtopg --delete --progress --password-file=/root/rsync/rsync2.passwd
 $src [email protected]$host2::$des90
echo "${files} was rsynced" >>/tmp/rsync.log 2>&1
done

说明:/usr/inotify/bin/inotifywait -mrq --timefmt ‘%d/%m/%y %H:%M‘ --format ‘%T %w%f %e‘ -e modify,delete,create,attrib $src 此句为inotify对src目录的监控,如果有修改、删除、创建、文件属性更改等操作文件事件发生,则上报监控

/usr/rsync/bin/rsync -vzrtopg --delete --progress --password-file=/root/rsync/rsync1.passwd $src [email protected]$host1::$des89  #上报监控完成后rsync进行同步,本条是同步到用户名为h89,ip为192.168.88.89,模块为host89的服务器上,密码使用rsync1.passwd认证
/usr/rsync/bin/rsync -vzrtopg --delete --progress --password-file=/root/rsync/rsync2.passwd $src [email protected]$host2::$des90  #上报监控完成后rsync进行同步,本条是同步到用户名为h90,ip为192.168.88.90,模块为host90的服务器上,密码使用rsync2.passwd认证
另外别忘记给监控shell脚本764权限
[[email protected] rsync]# chmod 764 rsync1.sh
至此,源服务器设置完成(主要是shell命令的配置),接下来配置目标服务器。

二、配置目标服务(192.168.88.89)

1、安装rsync与inotify

[[email protected] rsync-3.1.3]# cd /root/package/rsync-3.1.3/
[[email protected] rsync-3.1.3]# ./configure --prefix=/usr/rsync
[[email protected] rsync-3.1.3]#make
[[email protected] rsync-3.1.3]# make install
[[email protected] bin]# cd /root/package/inotify-tools-3.14/
[[email protected] inotify-tools-3.14]# ./configure  --prefix=/usr/inotify
[[email protected] inotify-tools-3.14]#make
[[email protected] inotify-tools-3.14]#make install

2、配置密码与conf文件

[[email protected] bin]# echo "h89:host89" >/root/rsync/rsync1.passwd[[email protected] bin]# chmod 600 rsync1.passwd

[[email protected] rsync]# cd /root/rsync
[[email protected] rsync]# vim rsync1.conf

uid = root
gid = root
use chroot = no
max connections = 10
strict modes = yes
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
[host89]
path = /root/rsync/backup89/
comment = web file
ignore errors
read only = no
write only = no
hosts allow = 192.168.88.88
hosts deny = *
list = false
uid = root
gid = root
auth users = h89
secrets file = /root/rsync/rsync1.passwd

说明与注意:此处认证用户必须是和源服务器一致h89 ,另外认证模块也必须相同,源服务器认证模块为des89=host89,那么目标服务器认证模块也必须是host89。.89为目标服务器密码必须是用户名:密码,这点和源服务器密码有区别。

3、至此192.168.88.89目标服务器配置完成

三、配置目标服务(192.168.88.90)

类似于89服务器配置

1、安装rsync与inotify

[[email protected] rsync-3.1.3]# cd /root/package/rsync-3.1.3/
[[email protected] rsync-3.1.3]# ./configure --prefix=/usr/rsync
[[email protected] rsync-3.1.3]#make
[[email protected] rsync-3.1.3]# make install
[[email protected] bin]# cd /root/package/inotify-tools-3.14/
[[email protected] inotify-tools-3.14]# ./configure  --prefix=/usr/inotify
[[email protected] inotify-tools-3.14]#make
[[email protected] inotify-tools-3.14]#make install

2、配置密码与conf文件

[[email protected] bin]# echo "h90:host90" >/root/rsync/rsync1.passwd[[email protected] bin]# chmod 600 rsync1.passwd

[[email protected] rsync]# cd /root/rsync
[[email protected] rsync]# vim rsync1.conf

uid = root
gid = root
use chroot = no
max connections = 10
strict modes = yes
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
[host90]
path = /root/rsync/backup90/
comment = web file
ignore errors
read only = no
write only = no
hosts allow = 192.168.88.88
hosts deny = *
list = false
uid = root
gid = root
auth users = h90
secrets file = /root/rsync/rsync1.passwd

说明与注意:此处认证用户必须是和源服务器一致h90 ,另外认证模块也必须相同,源服务器认证模块为des90=host90,那么目标服务器认证模块也必须是host90。.90为目标服务器密码必须是用户名:密码,这点和源服务器密码有区别。

3、至此192.168.88.90目标服务器配置完成

四、启动配置

源服务器启动:[[email protected] rsync]# sh  /root/rsync/rsync1.sh  &

目标服务器启动:[[email protected] rsync]# /usr/rsync/bin/rsync --daemon --config=/root/rsync/rsync1.conf

在源服务器的/root/rsync/test路径下创建或修改删除文件都将实时同步到另外两台目标服务器。

五、配置过程中troubleshooting

问题1、报错 failed to connect to X.X.X.X:Connection refused(111)
rsync: failed to connect to 192.168.88.90 (192.168.88.90): Connection refused (111)
rsync error: error in socket IO (code 10) at clientserver.c(127) [sender=3.1.3]
1、对方没开机\网络断\或者是对端rsync服务没开
解决开机或打开服务/usr/rsync/bin/rsync --daemon --config=/root/rsync/rsync1.conf
2、873端口没开-->iptables -I INPUT -p tcp --dport 873 -j ACCEPT

问题2、报错@ERROR: auth failed on module web
分析:可能是密码错误,要求源服务器(被同步服务器)密码文件内容为passwod,但目标服务器密码文件必须为用户名:密码,例如源设置为user=kilixi,密码文件内容为rsyncpwd;那么目标服务器密码文件内容必须为kilixi:rsyncpwd

问题3、报错@ERROR: Unknown module ‘xxx‘
rsync error: error starting client-server protocol (code 5) at main.c(1503) [sender=3.0.6]

分析:这种报错有可能是.sh配置错误或者.conf文件配置错误

处理:自行检查配置是否有问题

重要-->:报这种错误还有可能的原因是如果已经运行了rsync程序,但修改了.sh或.conf文件中内容,那么会出现进程被占用导致的程序运行失败,即修改后的程序并未在进程中运行,这时候就需要彻底杀死所有关于rsync的进程,同时重启源服务器和目标服务器的rsync进程
解决方法:
杀死包含某个关键字的进程 如下杀死包含“rsync”关键字的进程
ps  -ef |grep rsync|grep -v grep|cut -c 9-15|xargs kill -9
查看包含某个关键字的进程
ps -ef |grep rsync

六、Tips

1、本次配置是单向的,只能是源-->目标的同步,反向不同步。要配置双向同步可以在目标服务器上配置shell脚本(.sh配置),在源目标服务器配置.conf文件。

2、对于一对多的同步,必须注意ip地址、模块名称、认证用户名、密码等一一对应,否则可能找不到错误在哪。

3、开始一直被问题3、报错@ERROR: Unknown module ‘xxx‘的报错卡了很久,后面发现是进程占用问题(配置没问题,但就是一直报模块错误),需要使用ps  -ef |grep rsync|grep -v grep|cut -c 9-15|xargs kill -9   ,然后再重启开启rsync。

原文地址:https://www.cnblogs.com/mrtop/p/12396775.html

时间: 2024-10-09 17:53:41

rsync+inotify在linux下的多服务器同步的相关文章

Linux下搭建DNS服务器

一.修改Linux主机名 1.hostname 主机名 [[email protected] named]# hostname ifs.com 2.vi /etc/hosts [[email protected] named]# vi /etc/hosts 127.0.0.1 ns.ifs.com ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6 ~ 3.vim /etc/sysconfi

linux下smb文件共享服务器详解

1.smb服务器,netbios工作端口137/udp,138/udp,139/tcp,共享文件工作端口445/tcp 2.smb服务器主要是运行在linux与windows之间的文件共享服务, 安全级别有user,share,server,domain四种 user:相当于使用用户认证 share:相当于匿名访问 server:相当于在另一台服务器上用户认证 domain:相当于使用windows AD域用户认证 3.smb认证用户有3种,分为本地系统,非本地服务器上的帐号和windows的A

Linux下配置Tomcat服务器

Linux下配置Tomcat服务器和Windows下其实差不多,可以去官网下载安装包释放或者在线下载,只是当时下载的windows.zip文件,现在下载.tar.gz格式的即可,下面使用命令行的方式安装 还是在/usr/local下新建目录tomcat进入后用wget命令下载最新包,tomcat9.0现在已经出来了,但是为了和eclipse项目更好的兼容,建议下载tomcat8.0的最新包 下载好之后进行释放 tar -xzvf apache-tomcat-8.0.30.tar.gz 释放出来之

Linux下搭建DHCP服务器

一.DHCP所需软件包dhcp-common-4.1.1-34.Pl.el6.centos.x86_64dhcp-4.1.1-34.pl.el6.centon.x86_64二.编辑主配置文件 vi/etc/dhcp/dhcpd.conf ddns-update-style interim; ignore client-updates; shared-network ifs {        option domain-name     "ifs.com";        option 

Linux下使用Samba服务器举例

Linux下使用Samba服务器举例 实验环境: Vbox下,Rehat5虚拟机 使用samba服务器 目的:使用samba服务器将文件上传到服务器上 [[email protected] ~]# service smb start          //报错,没有smb服务 smb: unrecognized service //接下来安装samba服务器 [[email protected] ~]# mount /dev/cdrom /media/ mount: block device /

在linux下配置tftp服务器和nfs服务器

提示:该实验平台是在RedHatb6下进行的 配置成功的前提有三个: (1):在window下能ping的通linux (2):关闭linux 防火墙      执行指令:/etc/init.d/iptables stop (3):使SElinux处于宽容模式   执行指令:setenforce permissive 一.配置tftp服务器步骤 (1):挂载磁盘,安装tptp-server软件包 mount /dev/cdrom    /mnt/                        

Linux下搭建Apache服务器(完整版)

Linux下搭建Apache服务器(完整版) 什么是Apache? Apache Licence是著名的非盈利开源组织Apache采用的协议.该协议和BSD类似,同样鼓励代码共享和尊重原作者的著作权,同样允许代码修改,再发布(作为开源或商业软件).需要满足的条件也和BSD类似 Apache主要特点 1.开放源代码.跨平台应用 2.支持多种网页编程语言 3.模块化设计 .运行稳定.良好的安全性 Apache软件版本 1.X  1.目前最高版本是1.3,运行稳定  2.向下兼容性较好,但缺乏一些较新

Linux 下安装 Redis 服务器

本文简单介绍了 Linux 下安装 Redis 服务器的步骤,同时简要介绍服务器的配置.启动以及状态检测.另外还介绍了 32 位 CentOS 下安装 Redis 时遇到的一些问题的解决.        一. 查看 Linux 相关信息        版本查看cat /etc/issueCentOS release 5.5 (Final)        位数查看getconf LONG_BIT32        二. 安装 tcl        先装好 tcl,不然 redis 的 make t

linux下搭建samba服务器

服务器IP:192.168.4.5 1.安装samba服务软件包 [[email protected] 桌面]# yum -y install samba [[email protected] 桌面]# rpm -q samba samba-3.6.9-164.el6.x86_64 [[email protected] 桌面]# rpm -q samba-client 2.修改配置文件smb.conf 对配置文件做备份 [[email protected] 桌面]# cp /etc/samba/