1. 首页
  2. 技术知识

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        = no

flags                 = IPv6  ==> flags                = IPv4

server_args = –daemon ==> server_args = –daemon –config=/etc/rsyncd.conf
0x4.2 编辑/etc/rsyncd.conf 并添加以下脚本信息

uid = root

gid = root

use chroot = no

max connections = 1000

strict mode = yes

port = 873

pid 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/zytest

ignore errors

auth users =zytest

secrets file = /home/rsync-dst.ps

read only = no

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


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

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

chmod 600 /home/rsync-dst.ps
0x4.4 通过xinetd启动rsync

/etc/rc.d/init.d/xinetd restart0x5 主服务器上配置inosync脚本文件


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

#!/bin/sh

#chkconfig: 3 78 10

#This file exist from compile

if [ ! -f /usr/local/bin/inotifywait ]

then

echo “cannot start. file inotifywait NOT exist!”

exit

fi

#This file is runnable shell script

if [ ! -f /usr/local/bin/inosync.so.1 ]

then

echo “contact administrator. inosync.so.1 NOT exist!”

exit

fi

case “$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=zytest

src=/home/zytest/files

dst=zytest

#dst corresponding to [zytest] in file /etc/rsyncd.conf on dst server

log=/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.1

cp /root/inosync.so.1 /usr/local/bin
0x5.5 把密码写入调用的密码文件并赋予权限

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

chmod 600 /home/rsync-src.ps0x6 目标服务器设置inosync自动启动并开启inosync服务

chkconfig –level 3 inosync on

/etc/rc.d/init.d/inosync start0x7 测试 END

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


过程可通过日志查看

tail -f /root/inosync.log
总结

到此这篇关于Linux 通过Rsync+Inotify实现本、异地远程数据实时同步功能的文章就介绍到这了,更多相关rsync+inotify实现远程实时同步内容请搜索共生网络以前的文章或继续浏览下面的相关文章希望大家以后多多支持共生网络!

原创文章,作者:starterknow,如若转载,请注明出处:https://www.starterknow.com/107118.html

联系我们