inotify和rsync是两个不同的工具,它们分别具有以下的作用和特点:
-
inotify:
- 作用:inotify 是 Linux 内核提供的一个监视文件系统变化的机制。它可以实时监视文件或目录的变化,如创建、修改、删除、移动等操作,并及时通知相关的事件。程序可以通过监听inotify接口来获取文件系统变化的事件,并做出相应的处理。
- 特点:
- 实时性:inotify 可以实时监测文件系统的变化,即时通知事件。
- 精确性:inotify 提供了对文件和目录级别的监视,可以捕捉到具体的变动操作。
- 高效性:inotify 使用内核事件驱动机制,避免了轮询查找,提供了高效的文件系统监控功能。
-
rsync:
- 作用:rsync 是一个用于文件同步和备份的工具,它可以实现本地和远程文件之间的高效同步、备份和文件传输。通过增量复制算法,rsync 仅传输发生变化的部分,可以大幅度提高文件传输效率。
- 特点:
- 增量复制:rsync 只传输发生变化的部分,而不是整个文件,可以节省带宽和时间。
- 强大的文件同步能力:rsync 可以在本地或远程之间进行文件同步和备份,支持多种文件传输协议。
- 支持断点续传:rsync 支持断点续传,如果中断了文件传输过程,可以从中断的位置继续传输,而不需要重新开始传输。
- 多种同步模式:rsync 提供了不同的同步模式,如单向同步、双向同步等,可以根据需求进行灵活配置。
综上所述,inotify用于实时监控文件系统的变化,而rsync用于文件同步、备份和传输,可以根据实际需求选择使用。
常见的备份工具和rsync软件包的安装
1)常见的备份工具
cp
tar
scp
sftp
Rsync
2)rsync命令的常见选项
-a归档模式包含-rlptoD
-r递归模式,同步目录使用
-l同步符号连接
-v显示详细信息
-z传输进行压缩
-p保留权限
-t保持源文件时间标记
-g保留组标识
-o保留用户标识
-H保留硬链接文件
-A保留ACL属性
-D保留设备文件特殊文件使用
--delete:同步数据删除目标源文件数据
--checksum:校验同步数据
源端到发起端同步
源端(服务端)的配置
inotify+rsync同步配置流程
准备两台虚拟机
192.168.1.100
192.168.1.122
关闭防火墙并查询reync版本
[root@yuan ~]# systemctl stop firewalld
[root@yuan ~]# setenforce 0
[root@yuan ~]# iptables -F
[root@yuan ~]# rpm -qa rsync(查询已安装在系统中的 rsync 软件包的版本)
uid = nobody 管理账户
gid = nobody 管理组
use chroot = yes 禁锢在源目录
pid file = /var/run/rsyncd.pid rsync服务的id号
port 873 rsync服务启动监听的端口
address = 192.168.100.10 rsync服务器监听的ip地址
hosts allow = 192.168.100.* 允许192.168.100.0网络同步数据
[bdqn] 共享模块的名字
path = /bdqn rsync客户端同步根下的bdqn目录数据
comment = test 同步目录数据说明
dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2 文件后缀不需要压缩
read only = yes 同步目录数据只有读取权限
auth users = bob 同步验证账户bob
secrets file = /etc/rsync_user.db 配置身份验证数据库
[root@yuan ~]# vim /etc/rsyncd.conf
uid = nobody
gid = nobody
use chroot = yes
address = 192.168.1.100
port 873
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
hosts allow = 192.168.1.0/24
[wwwroot]
path=/var/www/html
comment = wwwroot
read only = no
dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2
auth users = haha
secrets file = /etc/rsyncd_users.db
[root@yuan ~]# vim /etc/rsyncd_users.db
写入:haha:123456
[root@yuan ~]# chmod 600 /etc/rsyncd_users.db(修改权限)
[root@yuan ~]# rsync --daemon(启动 rsync 作为守护进程)
[root@yuan ~]# netstat -lanpt |grep rsync(查询正在运行的 rsync 守护进程)
[root@yuan ~]# mkdir -p /var/www/html(创建目录)
[root@yuan ~]# touch /var/www/html/111.txt
(指定路径
/var/www/html
下创建一个新的文件)
发起端进行同步
关闭防火墙
[root@fa ~]# systemctl stop firewalld
[root@fa ~]# setenforce 0
[root@fa ~]# iptables -F
[root@fa ~]# export RSYNC_PASSWORD=123456
(用于设置环境变量
RSYNC_PASSWORD
的命令,将其值设置为123456)
[root@fa ~]# mkdir html(创建目录)
[root@fa ~]# rsync -avz --delete [email protected]::wwwroot /root/html
(使用 rsync 命令通过 SSH(远程同步)将远程主机上的
wwwroot
目录同步到本地/root/html
目录)
rsync的实时同步数据
1、rsync同步数据的方式
1)rsync计划任务
同步容易延迟
无法实时同步数据
必须通过计划任务实现
灵活性差
2)inotify和rsync结合实时同步数据
需要通过脚本实现
3)inotifywait监控常见的命令选项
-e指定监控事件
-m持续监控
4)inotifywait监控事件的类型
create:创建目录或者文件触发同步
move:移动或者重命名触发同步
delete:删除数据触发同步
modify:修改数据触发同步
attrib:修改文件目录属性触发同步
发现源更新数据自动触发更新
源端要安装监控软件
[root@yuan ~]#rz
[root@yuan ~]# tar xf inotify-tools-3.14.tar.gz
[root@yuan ~]# cd inotify-tools-3.14/
[root@yuan inotify-tools-3.14]# ./configure && make && make install
如果安装过程中还需要其它依赖可自行选择安装
yum -y install gcc-c++
yum -y install pcre-devel
yum -y install zlib-devel
[root@yuan ~]# ssh-keygen
[root@yuan ~]#ssh-copy-id –i [email protected]
[root@yuan ~]# rsync -avz /var/www/html/ [email protected]:/root/html
脚本实时同步
[root@yuan ~]# vim a.sh
#!/bin/bash
INW="inotifywait -rmq -e MOVE,DELETE,CREATE,ATTRIB /var/www/html"
RSY="rsync -azH --delete /var/www/html/ [email protected]:/root/html"
$INW | while read DIRECTORY EVENT FILE
do
$RSY
done
[root@yuan ~]# sh a.sh