Linux-rsync+inotify-实时同步
实验环境
数据端 centos8 10.0.0.8 data-server
备份端 centos8 10.0.0.88 backup-server
1、备份服务器 backup-server 配置
安装rsync
[root@backup-server ~]#yum install rsync rsync-daemon -y
创建rsync配置文件
[root@backup-server ~]#touch /etc/rsyncd.conf #有rsyncd.conf配置文件才能启动rsync服务端
[root@backup-server ~]#rsync --daemon # --daemon 启动服务端
设置共享目录,编辑配置文件
[root@backup-server ~]#vim /etc/rsyncd.conf [root@backup-server ~]#cat /etc/rsyncd.conf [www] path = /data/www/ read only = no #默认yes只读, no指定可读写
指定目录给nobody权限,默认用户以nobody访问此目录
[root@backup-server ~]#mkdir /data/www
[root@backup-server ~]#setfacl -m u:nobody:rwx /data/www/
2、数据端查看,配置data-server
监控工具
yum install -y inotify-tools rsync
访问测试
[root@data-server ~]#rsync rsync://10.0.0.88 www #查看到共项目了
[root@data-server ~]#rsync 10.0.0.88::
www
拷贝文件测试
数据端 [root@data-server ~]#rsync /etc/passwd 10.0.0.88::www 备份端 [root@backup-server ~]#ll /data/www/ total 4 -rw-r--r-- 1 nobody nobody 1320 May 28 23:29 passwd #用户默认都映射为nobody
以独立服务方式运行rsync并实现验证功能
备份服务器backup-server
编辑 rsync 配置文件
[root@backup-server ~]#vim /etc/rsyncd.conf [root@backup-server ~]#cat /etc/rsyncd.conf uid=root #指定用户来访问共享目录,将之指定为生成的文件所有者,默认nobody gid=root #默认nobody max connections = 0 #最大连接数不受限制 ignore errors #错误跳过 exclude = lost+found/ #跳过某些目录 log file = /var/log/rsyncd.log pid file = /var/run/rsyncd.pid lock file = /var/run/rsyncd.lock reverse lookup = no #禁止方向解析 [www] path = /data/www/ read only = no auth users = rsyncuser #默认anonymous可以访问rsync服务器 secrets file = /etc/rsync.pas #用户密码存放文件
root@backup-server ~]#echo "rsyncuser:123456" > /etc/rsnc.pas #设置用户密码存放进文件 [root@backup-server ~]#chmod 600 /etc/rsnc.pas #不给其他用户查看 增删改 [root@backup-server ~]#ll /etc/rsnc.pas -rw------- 1 root root 17 May 28 23:43 /etc/rsync.pas [root@backup-server ~]#rsync --daemon #可加入/etc/rc.d/rc.local 实现开机启动 [root@backup-server ~]#systemctl start rsyncd #服务来自rsync-daemon包
数据端data-server
- 客户端配置密码文件
- 也可将密码赋值给环境变量RSYNC_PASSWORD变量,但不安全
- export RSYNC_PASSWORD=123456
[root@data-server ~]#echo "123456" > /etc/rsync.pas [root@data-server ~]#chmod 600 /etc/rsync.pas
客户端测试同步数据
数据端 [root@data-server ~]#rsync /etc/sysctl.conf --password-file=/etc/rsync.pas rsync://rsyncuser@10.0.0.88/www 备份服务器 [root@backup-server /data/www]#ll total 8 -rw-r--r-- 1 nobody nobody 1320 May 28 23:29 passwd -rw-r--r-- 1 root root 449 May 29 00:26 sysctl.conf
脚本监测目录变化,同步文件
运行脚本
#!/bin/bash # # SRC='/data/www/' #注意最后的/ DEST='rsyncuser@10.0.0.88::www' rpm -q rsync &> /dev/null || yum -y install rsync inotifywait -mrq --exclude=".*\.swp" --timefmt '%Y-%m-%d %H:%M:%S' --format '%T %w %f' -e create,delete,moved_to,close_write,attrib ${SRC} |while read DATETIME DIR FILE;do FILEPATH=${DIR}${FILE} rsync -az --delete --password-file=/etc/rsync.pas $SRC $DEST && echo "At ${TIME} on ${DATE}, file $FILEPATH was backuped up via rsync" >> /var/log/changelist.log done
创建文件测试
删除文件测试
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)