业务场景:将所有服务器内的日志文件以小时为单位压缩后保存同时清空源日志文件。此后通过rsync + inotify 机制将压缩文件统一备份到日志服务器内。实现对日志文件的统一保存和备份。 rsync 和inotify这里就不介绍了!有兴趣的可以到官网查看。 大致服务架构图:
一、三台机器的IP分别为: 源服务器:172.20.2.108 目标(备份)服务器:172.20.2.225 @todo:从源服务器(172.20.2.108)的/data/目录下的所有的文件实时通过到目标服务器(172.20.2.225)的/data目录下 源服务器下需要安装rsync 和inotify,源服务器做为server端,实时的向目标服务器client端发送数据。
二、安装rsync
一般情况下centos 6.9下都安装了rsync,所以就不必安装了,可以用以下命令检查一下是否已安装:rpm -qa | grep rsync
上面显示了我的机器上没有安装rsync
如果没有安装请往下看:
cd /opt/softdir
wget http://rsync.samba.org/ftp/rsync/src/rsync-3.0.9.tar.gz
tar xf rsync-3.0.9.tar.gz
cd rsync-3.0.9 && ./configure --prefix=/opt/rsync && make && make install
rsync安装完毕!
三、创建同步文件所需要的密码文件,这样做是为了安全。
echo "newpassword" > /etc/rsyncd.secrets
echo "redhat" > /etc/rsyncd.secrets
注:这里的newpassword可以实任意字符。
处于安全考虑要把此文件的权限修改成600
chmod 600 /etc/rsyncd.secrets
四、安装inotify
先查看服务器是否支持inotify
ll /proc/sys/fs/inotify
会有三个文件,这说明此服务器支持inotify的。
下面安装inotify: cd /opt/softdir wget -c https://nchc.dl.sourceforge.net/project/inotify-tools/inotify-tools/3.13/inotify-tools-3.13.tar.gz tar xf inotify-tools-3.13.tar.gz cd inotify-tools-3.13 && ./configure --prefix=/opt/inotify && make && make install 五、创建rsync复制脚本,用户shell实现,其功能就是:从源服务器(172.20.2.108)的/data/目录下的所有文件无论是添加、修改、删除文件,能够通过inotify监控到,并通过rsync实时同步到目标服务器(172.20.2.225)的/data下
vim /usr/bin/rsync.sh
#!/bin/bash
host=172.20.2.225
src=/data/
des=web
user=root
/opt/inotify/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f%e' -e modify,delete,create,attrib $src \
| while read files
do
/opt/rsync/bin/rsync -zrtopg --delete --progress --password-file=/etc/rsyncd.secrets $src $user@$host::$des
echo "${files} was rsynced" > /var/log/rsyncd.log 2>&1
done
其中host是目标服务器的ip,src是源服务器要同步的目录,des是认证模块名,需要与目标服务器一致,user是建立密码文件里的认证用户。 修改rsync.sh的权限 chmod +x /usr/bin/rsync.sh 到此为止,源服务器的所有操作就完成了!下面配置目标服务器。
———————————————— 我是分割线—————————————————
一、目标服务器也要安装 rsync,安装方式跟源服务器一样,这里就不在赘述了 二、建立密码文件: echo "root:redhat" >/etc/rsyncd.secrets 同样要给此文件一个600的权限 chmod 600 /etc/rsyncd.secrets 注:在源服务器建立的密码文件,只有密码,没有用户名;而在目标服务器里建立的密码文件,用户名与密码都有。 三、写rsync的配置文件 vim /etc/rsyncd.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
#log format = %t %a %m %f %b # 日志记录格式
[web]
path = /data
comment = web file
ignore errors
read only = no
write only = no
hosts allow = 172.20.2.108
hosts deny = *
list = false
uid = root
gid = root
auth users =root
secrets file = /etc/rsyncd.secrets
四、目标服务器启动 rsync /opt/rsync/bin/rsync --daemon --config=/etc/rsyncd.conf 五、源服务器启动同步: /usr/bin/rsync.sh & 到这里,所有的都以完成。可以到源服务器下的/data目录下创建、删除文件,然后在看一下目标服务器下的/data下是出现同样的变化。