千家信息网

Linux如何通过Rsync+Inotify实现本、异地远程数据实时同步功能

发表于:2025-01-25 作者:千家信息网编辑
千家信息网最后更新 2025年01月25日,这篇文章主要为大家展示了Linux如何通过Rsync+Inotify实现本、异地远程数据实时同步功能,内容简而易懂,希望大家可以学习一下,学习完之后肯定会有收获的,下面让小编带大家一起来看看吧。0x0
千家信息网最后更新 2025年01月25日Linux如何通过Rsync+Inotify实现本、异地远程数据实时同步功能

这篇文章主要为大家展示了Linux如何通过Rsync+Inotify实现本、异地远程数据实时同步功能,内容简而易懂,希望大家可以学习一下,学习完之后肯定会有收获的,下面让小编带大家一起来看看吧。

0x0 测试环境

总部生产服务器与分部备份服务器要求实现异地数据备份,环境如下

**centos 6.5**
生产服务器目录: /home/zytest/files
备份服务器目录: /home/zytest/files
用户 / 密码: zytest / zytest

0x1 生产服务器环境搭建

0x1.1 安装gcc编译器和rsync

yum install gcc rsync -y

0x1.2 拷贝inotify到服务器并解压

cd /root
tar xfvz inotify-tools-3.13.tar.gz

0x1.3 进入inotify 目录安装

 cd inotify-tools-3.13 ./configure make make install       /usr/local/bin/inotifywait ##检查是否安装成功

0x2 备份服务器环境搭建

0x2.1 安装 xinetd 和 rsync

yum install xinetd rsync -y

0x3 以下内容两台服务器同步操作

useradd -u 600 zytest  passwd zytest     zytest su - zytest -c 'mkdir /home/zytest/files' ##创建同步目录

0x4 备份服务器上配置rsyncd

0x4.1 编辑/etc/xinetd.d/rsync按照以下内容修改

disable   = yes  ==> disable  = noflags            = IPv6  ==> flags           = IPv4server_args = --daemon ==> server_args = --daemon --config=/etc/rsyncd.conf

0x4.2 编辑/etc/rsyncd.conf 并添加以下脚本信息

uid = rootgid = rootuse chroot = nomax connections = 1000strict mode = yesport = 873pid file = /var/run/rsyncd.pid lock file = /var/run/rsyncd.lock log file = /var/log/rsyncd.log# following for user "zytest", change for other users[zytest]path = /home/zytestignore errorsauth users =zytestsecrets file = /home/rsync-dst.psread only = nolist = false

Ps: rsyncd 配置文件在 xinetd上,所以备份服务器安装xinetd

0x4.3 把密码写入调用的密码文件并赋予权限

echo zytest:zytest >> /home/rsync-dst.pschmod 600 /home/rsync-dst.ps 

0x4.4 通过xinetd启动rsync

 /etc/rc.d/init.d/xinetd restart

0x5 主服务器上配置inosync脚本文件

0x5.1 ** ##编辑/root/inosync添加脚本代码**

#!/bin/sh#chkconfig: 3 78 10#This file exist from compileif [ ! -f /usr/local/bin/inotifywait ]then echo "cannot start. file inotifywait NOT exist!" exitfi#This file is runnable shell scriptif [ ! -f /usr/local/bin/inosync.so.1 ]then echo "contact administrator. inosync.so.1 NOT exist!" exitficase "$1" in 'start') /usr/local/bin/inosync.so.1 &;'stop') pid=`ps -ef | grep -v grep | grep "inotifywait" | awk '{print $2}'` kill -9 $pid 2>&1;;'restart') $0 stop $0 start;;esac

0x5.2 赋予脚本权限,设置开机启动

chmod a+x /root/inosync cp /root/inosync /etc/rc.d/init.d

0x5.3 配置调用的主脚本文件 /root/inosync.so.1

rhost=**备份服务器IP**user=zytestsrc=/home/zytest/filesdst=zytest#dst corresponding to [zytest] in file /etc/rsyncd.conf on dst serverlog=/root/inosync.log/usr/local/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M:%S' --format '%T %w%f %e' -e close_write,create,move,delete,attrib $src | while read files do echo == rsync begin == >> $log rsync -avP --password-file=/home/rsync-src.ps --delete $src $user@$rhost::$dst >> $log 2>&1 echo -- rsyncd -- >> $log date >> $log echo "${files} was rsynced " >> $log 2>&1 done

PS: %T后面有空格 %f和%e之间也有空格

0x5.4 赋予inosync.so.1脚本权限,拷贝到/usr/local/bin

chmod a+x /root/inosync.so.1cp /root/inosync.so.1 /usr/local/bin

0x5.5 把密码写入调用的密码文件并赋予权限

echo zytest >> /home/rsync-src.ps chmod 600 /home/rsync-src.ps

0x6 目标服务器设置inosync自动启动并开启inosync服务

chkconfig --level 3 inosync on/etc/rc.d/init.d/inosync start

0x7 测试 END

在生产服务器/home/zytest/files目录下创建文件和文件夹,查看备份存储是否也同步了文件和文件夹,同步即成功。

过程可通过日志查看

tail -f /root/inosync.log

以上就是关于Linux如何通过Rsync+Inotify实现本、异地远程数据实时同步功能的内容,如果你们有学习到知识或者技能,可以把它分享出去让更多的人看到。

0