关于Linux中文件同步inotify+rsync(配置篇)

看完inotify和rsync的原理(关于Linux中文件同步inotify+rsync(介绍篇)),接下来就是该如何配置了。

安装环境

CentOS 7 1810

3.10.0-957.el7.x86_64 #1 SMP Thu Nov 8 23:39:32 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

要安装inotify先要确定是否能进行使用

 ls -l /proc/sys/fs/inotify/,有下面三个文件,便是支持inotify


从文件名便可知这三个文件分别是inotify instance中可排队的event的数目的最大值、每一个real user ID可创建的inotify instatnces的数量上限、每个inotify instance相关联的watches的上限

接下来便是关闭selinux、firewalld,清空iptables规则

setenforce 0  &&  sudo sed -i.ori 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config  && getenforce

看到selinux处于disabled即可

iptables -t nat -F && iptables -F && iptables -L -vn && iptbales -t nat -L -vn

Inotify安装配置

确定上面的限制都关闭后,就可以开始进行安装了,我是进行编译安装,各位可以直接yum install -y inotify-tools

inofity-tools下载地址:http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz

下载好后进行解压

[root@es1_master_node_test ~]# tar -xvzf inotify-tools-3.14.tar.gz
进入解压后文件夹

[root@es1_master_node_test ~]# cd inotify-tools-3.14

进行编译安装,并制定安装路径

[root@es1_master_node_test inotify-tools-3.14]# ./configure --prefix=/usr/local/inotify
此时我报了个错,linux报错不可怕,因为linux报错一般都会把错误原因说的清清楚楚,明明白白

linux告诉我说在环境变量$PATH中找不到可接受的C编译器,那好办,安装一个gcc就好了

[root@es1_master_node_test inotify-tools-3.14]# yum install gcc -y

安装好后再一次编译,这次编译就顺畅很多,当看到下图,就可以进行下一步,make && make install

最后出现这个的时候,就代表正常安装完成了

此时可以进到我开始指定的安装目录查看,能看到

在此文中就不详细讲述inotify了,接下来是rsync的安装和配置

可以选择编译安装,也可以选择yum直接安装,

在这里我选择yum直接安装,

rsync安装配置

[root@es1_master_node_test bin]# yum install -y rsync

通过yum安装后并没有直接的rsync的文件夹,它的配置文件rsync.conf文件是直接在/etc/目录下,而编译安装的情况是没有rsync.conf文件的,此时需要在自己指定的rsync安装目录下/etc目录里面创建此文件

接下来就是创建rsync.passwd文件了,密码文件随便你放哪,如果是编译安装可以统一放在/rsync/etc目录下,这是两个服务器进行文件同步的密码

在文件发送端只需要在rsync.passwd里面配置密码即可,接收端需要以user:passwd的形式保存rsync.passwd

passwd文件只能是600权限,不然会导致验证失败

在/usr/local/bin目录下创建rsync_data.sh同步脚本

#!/bin/bash

date=`date +%Y%m%d`
host=10.9.8.215
src=/data/blog/static/
dst=rsyncdata
user=rsyncuser
rsync_passible=/etc/rsyncd.passwd
inotify_home=/usr/local/inotify

if [ ! -e "$src" ]\
 || [ ! -e "$rsync_passible" ]\
 || [ ! -e "$inotify_home/bin/inotifywait" ]\
 || [ ! -e "/usr/bin/rsync" ]
 then
    echo "File is not enough to run inotify!"
    exit 9
fi
${inotify_home}/bin/inotifywait -mrq  --format "%w%f" -e close_write,modify,attrib,create $src \
 | while read line
    do
  #     [ ! -e $line ] && continue
      echo '$line'=$line >> /tmp/rsync_$date.log
      cd $src && rsync -aruz -R ./ --timeout=104 $user@$host::$dst --password-file=${rsync_passible} >/dev/null 2>&1
    done
exit 0

到此,rsync的发送端的配置基本完成,在讲法上,发送端又叫做客户端,在shell脚本中有一句

${inotify_home}/bin/inotifywait -mrq  --format "%w%f" -e close_write,modify,attrib,create $src \

就是用到inotify进行文件的实时情况进行监控,进行增量同步

接下来就是配置rsync的接收端了,同样的需要在接收端安装rsync,这里我同样用yum进行安装

同样需要进行密码的配置,接收端的密码在前文有讲到,需要以user:passwd键值对的形式进行保存

接下来和发送端的配置有点不一样了,发送端无须配置rsync.conf,但是接收端需要进行配置,配置相应的模块

rsyncdata就是一个模块,发送端发送东西过来后,接收端的rsync根据这个模块里面的配置,进行辨认,验证,接受保存文件到相应的path

在模块上面有一些rsync本身的一些基础配置

接下来在发送端启动rsync_data.sh脚本

[root@es1_master_node_test static]# ./rsync_data.sh &

在接收端

[root@es1_master_node_test static]# systemctl start rsyncd && systemctl status rsyncd

开启成功,接下来去发送端的相应目录下生成一个测试文件,再查看接收端是否收到此测试文件,

发送端生成文件

查看接收端,也同步了此文件

至此,inotify+rsync的安装配置就大功告成咯。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hobby云说

你的鼓励将是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值