Linux 通过Rsync+Inotify实现本、异地远程数据实时同步功能
0x0测试环境
总部生产服务器与分部备份服务器要求实现异地数据备份,环境如下
**centos6.5**
生产服务器目录:/home/zytest/files
备份服务器目录:/home/zytest/files
用户/密码:zytest/zytest
0x1生产服务器环境搭建
0x1.1安装gcc编译器和rsync
yuminstallgccrsync-y
0x1.2拷贝inotify到服务器并解压
cd/root
tarxfvzinotify-tools-3.13.tar.gz
0x1.3进入inotify目录安装
cdinotify-tools-3.13 ./configure make makeinstall /usr/local/bin/inotifywait##检查是否安装成功
0x2备份服务器环境搭建
0x2.1安装xinetd和rsync
yuminstallxinetdrsync-y
0x3以下内容两台服务器同步操作
useradd-u600zytest passwdzytest 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 usechroot=no maxconnections=1000 strictmode=yes port=873 pidfile=/var/run/rsyncd.pid lockfile=/var/run/rsyncd.lock logfile=/var/log/rsyncd.log #followingforuser"zytest",changeforotherusers [zytest] path=/home/zytest ignoreerrors authusers=zytest secretsfile=/home/rsync-dst.ps readonly=no list=false
Ps:rsyncd配置文件在xinetd上,所以备份服务器安装xinetd
0x4.3把密码写入调用的密码文件并赋予权限
echozytest:zytest>>/home/rsync-dst.ps chmod600/home/rsync-dst.ps
0x4.4通过xinetd启动rsync
/etc/rc.d/init.d/xinetdrestart
0x5主服务器上配置inosync脚本文件
0x5.1**##编辑/root/inosync添加脚本代码**
#!/bin/sh #chkconfig:37810 #Thisfileexistfromcompile if[!-f/usr/local/bin/inotifywait] then echo"cannotstart.fileinotifywaitNOTexist!" exit fi #Thisfileisrunnableshellscript if[!-f/usr/local/bin/inosync.so.1] then echo"contactadministrator.inosync.so.1NOTexist!" exit fi case"$1"in 'start') /usr/local/bin/inosync.so.1& ;; 'stop') pid=`ps-ef|grep-vgrep|grep"inotifywait"|awk'{print$2}'` kill-9$pid2>&1 ;; 'restart') $0stop $0start ;; esac
0x5.2赋予脚本权限,设置开机启动
chmoda+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 #dstcorrespondingto[zytest]infile/etc/rsyncd.confondstserver log=/root/inosync.log /usr/local/bin/inotifywait-mrq--timefmt'%d/%m/%y%H:%M:%S'--format'%T%w%f%e'-eclose_write,create,move,delete,attrib$src|whilereadfiles do echo==rsyncbegin==>>$log rsync-avP--password-file=/home/rsync-src.ps--delete$src$user@$rhost::$dst>>$log2>&1 echo--rsyncd-->>$log date>>$log echo"${files}wasrsynced">>$log2>&1 done
PS:%T后面有空格%f和%e之间也有空格
0x5.4赋予inosync.so.1脚本权限,拷贝到/usr/local/bin
chmoda+x/root/inosync.so.1 cp/root/inosync.so.1/usr/local/bin
0x5.5把密码写入调用的密码文件并赋予权限
echozytest>>/home/rsync-src.ps chmod600/home/rsync-src.ps
0x6目标服务器设置inosync自动启动并开启inosync服务
chkconfig--level3inosyncon /etc/rc.d/init.d/inosyncstart
0x7测试END
在生产服务器/home/zytest/files目录下创建文件和文件夹,查看备份存储是否也同步了文件和文件夹,同步即成功。
过程可通过日志查看
tail-f/root/inosync.log
总结
到此这篇关于Linux通过Rsync+Inotify实现本、异地远程数据实时同步功能的文章就介绍到这了,更多相关rsync+inotify实现远程实时同步内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!