点击上方“IT那活儿”公众号,关注后了解更多内容,不管IT什么活儿,干就完了!!!
sersync+RSYNC、inotify+rsync
Inotify是一个通知接口,用来监控文件系统的各种变化,如果文件存取,删除,移动。可以非常方便地实现文件异动告警,增量备份,并针对目录或文件的变化及时作出响应。 rsync+inotify可以实触发式实时同步增量备份。 sersync是国人基于rsync+inotify-tools开发的工具,不仅保留了优点同时还强化了实时监控,文件过滤,简化配置等功能,帮助用户提高运行效率,节省时间和网络资源。项目地址: https://github.com/wsgzao/sersync
1. 关闭selinux
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
vim /etc/selinux/conf
SELINUX=disabled
reboot
2. 开启防火墙tcp 873端口(Rsync默认端口)
vi etc/sysconfig/iptables
-A RH-Firewall-1-INPUT -m state --
state NEW -m tcp -p tcp --
dport 873 -j ACCEPT
/etc/init.d/iptables restart
3. 服务端配置(192.168.1.2/3/4)
rpm -qa | grep rsync
yum -y install rsync xinetd
vi /etc/rsyncd.conf
#全局配置,在全局生效
#设置rsync运行权限为root
uid = root
#设置rsync运行权限为root
gid = root
#默认端口
port=873
#默认为true,修改为no,增加对目录文件软连接的备份
use chroot = no
#设置rsync服务端文件为读写权限
read only = no
#不显示rsync服务端资源列表
list = no
#忽略I/O等错误
ignore errors
#设置备份目录允许进行网络数据备份的主机地址或网段信息,即设置白名单
hosts allow = 192.168.1.5
#设置备份目录禁止进行网络数据备份的主机地址或网段信息,即设置黑名单
hosts deny = 0.0.0.0/32
#指定访问备份数据目录的认证用户信息,为虚拟定义的用户,不需要进行创建
auth users = rsync
#最大连接数
max connections = 100
#设置超时时间
timeout = 600
#指定rsync的日志文件,而不将日志发送给syslog
log file = /var/log/rsyncd.log
##记录传输文件的日志
transfer logging = yes
#日志格式
log format = %t %a %o %m %f %b
#日志级别
syslog facility = local3
#pid文件的存放位置
pidfile = /var/run/rsyncd.pid
#支持max connections参数的锁文件
lock file = /var/run/rsync.lock
#设置访问备份数据目录进行认证用户的密码文件信息,会在文件中设置认证用户密码信息
secrets file = /etc/rsync.pass
#用来指定一个消息文件,当客户连接服务器时该文件的内容显示给客户,默认是没有motd文件的。
#motd file = /etc/rsyncd.Motd
#局部配置,只在模块内生效
#模块名(必须全局唯一)
[backup]
#模块说明信息
comment = "backup dir"
#指定数据进行备份的目录信息
path = /data/back_dir
echo 'rsync:Rsync@net1' >> /etc/rsync.pass
chmod 600 /etc/rsync.pass
vi /etc/xinetd.d/rsync
disable = no
CentOS中是以xinetd来管理Rsync服务的
/etc/init.d/xinetd start
4. 客户端配置(192.168.1.5/6/7)
rpm -qa | grep rsync
yum -y install rsync
echo 'Rsync@net1' >> /etc/rsync.pass
chmod 600 /etc/rsync.pass
rsync -azvp /data/back_dir rsync@192.168.1.2::backup/ --password-file=/etc/rsync.pass
1. 安装sersync
tar -zxvf sersync2.5.4_64bit_binary_stable_final.tar.gz -C /data/opt
cd /data/opt/
mv GNU-Linux-x86 sersync
2. 编辑配置文件
cd sersync/
cp confxml.xml confxml.xml.bak
vim confxml.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<head version="2.5">
<host hostip="localhost" port="8008"></host>
<debug start="true"/>
<fileSystem xfs="false"/>
<!-- 说明:实现同步数据过滤排除功能 -->
<filter start="false">
<exclude expression="(.*)\.svn"></exclude>
<exclude expression="(.*)\.gz"></exclude>
<exclude expression="^info/*"></exclude>
<exclude expression="^static/*"></exclude>
</filter>
<!-- 说明:类似于inotify的-e参数功能,指定监控的事件信息 -->
<inotify>
<delete start="true"/>
<createFolder start="true"/>
<createFile start="false"/>
<closeWrite start="true"/>
<moveFrom start="true"/>
<moveTo start="true"/>
<attrib start="false"/>
<modify start="false"/>
</inotify>
<sersync>
<!-- 这里填写服务器A要同步的文件夹路径-->
<localpath watch="/data/back_dir">
<!-- 这里填写备份服务器的IP地址和模块名-->
<remote ip="192.168.1.2" name="backup"/>
<!--<remote ip="192.168.1.2" name="backup"/>-->
<!--<remote ip="192.168.1.4" name="backup"/>-->
</localpath>
<rsync>
<commonParams params="-artuz"/>
<!-- rsync+密码文件 这里填写备份服务器的认证信息-->
<auth start="true" users="rsync" passwordfile="/etc/rsync.pass"/>
<userDefinedPort start="false" port="874"/><!-- port=874 -->
<timeout start="false" time="100"/><!-- timeout=100 -->
<ssh start="false"/>
</rsync>
<failLog path="/tmp/rsync_fail_log.sh" timeToExecute="60"/><!--default every 60mins execute once-->
<crontab start="false" schedule="600"><!--600mins-->
<crontabfilter start="false">
<exclude expression="*.php"></exclude>
<exclude expression="info/*"></exclude>
</crontabfilter>
</crontab>
<plugin start="false" name="command"/>
</sersync>
</head>
3. 启动sersync
./sersync2 -d -r -o ./confxml.xml
4. 配置环境变量
vim /etc/profile.d/sersync2.sh
export PATH=$PATH:/data/opt/sersync
source /etc/profile.d/sersync2.sh
5. 设置sersync开机自动执行
vi /etc/rc.d/rc.local
sersync2 -d -r -o /data/opt/sersync/confxml.xml
6. 添加脚本监控sersync是否正常运行
vi /data/opt/scripts/check_sersync.sh
#!/bin/sh
sersync="/data/opt/sersync/sersync2"
confxml="/data/opt/sersync/confxml.xml"
status=$(ps aux |grep 'sersync2'|grep -v 'grep'|wc -l)
if [ $status -eq 0 ];
then
$sersync -d -r -o $confxml &
else
exit 0;
fi
chmod +x /data/opt/scripts/check_sersync.sh
vi /etc/crontab
*/5 * * * * /bin/bash /data/opt/scripts/check_sersync.sh > /dev/null 2>&1
service crond reload

本文作者:郑金龙(上海新炬中北团队)
本文来源:“IT那活儿”公众号

文章转载自IT那活儿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




