linux inotify 自动同步文件

31 篇文章 0 订阅
本文详细介绍了如何配置rsync服务端和客户端,包括配置rsyncd.conf文件,创建用户,设置密码文件,并启动rsync服务。同时,讲解了利用inotify监听文件变化,实现实时同步的步骤,包括安装inotify-tools,编写监控脚本,并设置开机自启。通过结合rsync和inotify,可以实现文件系统的自动同步更新。
摘要由CSDN通过智能技术生成

一、配置及启动rsync

/etc/rsyncd.conf,/etc/rsyncd.secrets 服务端、客户端都存在,且配置一致。
配置过程出现的错误,可以参考:

rsync配置错误

模块验证错误原因

1、配置rsync

首先说明,服务端和客户端都需要在 /etc/rsyncd.conf中配置,且配置一致。

strict modes = yes
#rsync default port
uid = root #守护进程的用户权限
gid = root
port = 873 #rsync使用的端口
logfile = /var/log/rsyncd.log 
pidfile = /var/run/rsyncd.pid 
max connections = 4 
auth users = user_rsync #授权用户
secrets file = /etc/rsyncd.secrets #密码文件位置
use chroot = yes
read only = no # no客户端可上传文件,yes只读
write only = no # no客户端可下载文件,yes不能下载

#[modules] each path responding to a module
[appbackup] # 要同步的模块名
path = /home/rsync/test1 # 要同步的目录
auth user = user_rsync 
#hosts allow=128.2.2.1

#修改文件权限
chmod 600 /etc/rsyncd.conf

2、创建user_rsync用户

#创建用户
useradd -m user_rsync
#设定密码
passwd user_rsync

3、配置密码文件/etc/rsyncd.secrets

user_rsync:xxxx
#修改文件权限
chmod 600 /etc/rsyncd.secrets

4、启动rsync

rsync --daemon --config=/etc/rsyncd.conf

5、防火墙开启端口

iptables -A INPUT -p tcp --dport 873

5、客户端(即推送文件一端)

客户端要额外配置一个rsyncd.secrets 文件,格式与/etc/rsyncd.secrets的不同,只保存验证用户的密码
#user_rsync的密码

xxxx

6、客户端推送文件

rsync -avz /home/rsync/test1/ user_rsync@服务端ip::appbackup --password-file=/home/rsync/rsyncd.secrets 

二、通过inotify监听文件变更实现自动实时同步

inotify参考

1、inotify的安装

yum -y install inotify-tools

inotify的两个命令;

inotifywait:在被监控的文件或目录上等待特定文件系统事件(open,close,delete等)发生,执行后处于阻塞状态,适合shell脚本中使用。
inotifywatch:收集被监视的文件系统使用度统计数据,指文件系统事件发生的次数统计。

innotifwait的参数

-r --recursive    递归查询目录
-q --quiet    打印很少的信息,仅仅打印监控事件的信息
-m,--monitor    始终保持事件监听状态
--exclude    排除文件或目录时,不区分大小写。
--timefmt    指定时间输出的格式
--format    打印使用指定的输出类似格式字符串
-e,--event    通过此参数可以指定需要监控的事件,如下一个列表所示

-e --event的各种事件含义

Events    含义
access    文件或目录被读取
modify    文件或目录内容被修改
attrib    文件或目录属性被改变
close    文件或目录封闭,无论读/写模式
open    文件或目录被打开
moved_to    文件或目录被移动至另外一个目录
move    文件或目录被移动到另一个目录或从另一个目录移动至当前目录
create    文件或目录被创建在当前目录
delete    文件或目录被删除
umount    文件系统被卸载

示例

#inotifywait 参数 表现格式 指定事件 指定监控目录
inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f%e' -e modify,delete,create,move,attrib /backup

rsync 加inotify的监控脚本

#!/bin/bash
server_ip=xxxx
monitor_dir=/home/rsync/test1/
#接收方配置的rsync模块名
server_module=appbackup
#接收方鉴权时的用户
server_user=user_rsync
inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f%e' -e modify,delete,create,move,attrib $monitor_dir | while read files
do
	rsync -vzrtopgq --delete --progress --password-file=/home/rsync/rsyncd.secrets $monitor_dir $server_user@$server_ip::$server_module
done

加入开机自启启动

#加入开机自启
echo "/data/shell/inotify_rsync.sh &" >> /etc/rc.local 
#提示: 
#一个& 代表从后台开始运行该条命令。

在/proc/sys/fs/inotify目录下有三个文件,对inotify机制有一定的限制 max_user_watches:设置inotifywait或inotifywatch命令可以监视的文件数量(单进程) max_user_instances:设置每个用户可以运行的inotifywait或inotifywatch命令的进程数 max_queued_events:设置inotify实例事件(event)队列可容纳的事件数量。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值