rsync+inotifywait
0、rsync+inotify是实现文件实时同步的,加什么参数才能实现实时同步,--delete参数又是什么意思?
yum -y install inotify-tools
1.运行模式(服务器)
rsync有两种常用的认证方式,一种是rsync-daemon方式,我们使用最多的是rsync-daemon方式。
这种模式是基于C/S模式的,rsync在后台启用了一个守护进程,这个守护进程在rsync服务器永久运行,用于接收请求传输文件,因此,客户端既可以把文件推送(push)给守护进程,也可以向守护进程拉取(pull)文件。rsync的服务器模式非常适合为异地的中心备份服务器或数据异地存储库来使用。
我的实验架构:
10.1.1.36 ---------------push---------------------10.1.185
(client) (server,备份用的)
2.安装配置
a.在客户端10.1.1.36(这是一台邮件服务器)vim /etc/rsyncd.pass (写入123456)
1 | chmod 600 /etc/rsyncd .pass |
1 | yum install rsync -y |
b.在服务端10.1.1.85(专门用来备份的机器)
1 | yum install rsync -y |
创建 mkdir /data/test,首先进行配置文件的设定,我们设置的如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | # cat /etc/rsyncd.conf uid = root gid = root use chroot = no max connections = 10 pid file = /var/run/rsyncd .pid log file = /var/log/rsync .log transfer logging = yes timeout = 900 ignore nonreadable = yes dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2 [nextcloud] path = /data/nextcloud comment = pan.comratings.com read only = no write only = no hosts allow = 10.0.2.30 list = no ignore errors auth users = backup secrets file = /etc/rsyncd .pass<br><br> |
增加密码认证文件:(在服务端)
1 2 | # vim /etc/rsyncd.pass backup:123456 |
1 | chmod 600 /etc/rsyncd .pass |
启动服务器:
1 | systemctl start rsyncd.service<br><br> |
在10.1.1.36(client)rsync -vzrtopg --progress ./ --password-file=/etc/rsyncd.pass backup@10.1.1.85::nextcloud ------push 增量推送 把 ./下的文件增量得同步到10.1.1.85:/data/test/下
在10.1.1.36 (client) rsync -vzrtopg --progress --password-file=/etc/rsyncd.pass backup@10.1.1.85::nextcloud ./ -------pull 增量拉下 把10.1.1.85:/data/test/下文件增量拉到36的./
1 2 3 4 5 6 7 8 9 10 | v 是“--verbose”显示详细输出模式 z是“--compress”压缩模式 r是“--recursive”以子目录递归模式 t是“-- times “用来保持文件信息时间 o是”--owner“用来保持文件的属主信息 p是”--perms“用来保持文件权限 g是”--group“用来保持文件的属组 --progress:用来显示数据镜像同步的过程 --delete:指定以 rsync 服务器为基准进行数据镜像同步,也就是要保持 rsync 服务器端目录与客户端目录的完全一致 rsync 中的-delete参数是指“ 删除那些DST中SRC没有的文件”。 --exclude:用于排除不需要文件传输的类型下面是我在客户端的小脚本,把客户端本地的文件同步到 rsync 服务器通过inotifywait 中的-m参数可以实现“始终保持事件监听状态” |
#!/bin/bash
#author:xiaoweige
host_slave=10.1.1.85
master_src=/data/test/
inotify_home=/usr/local/inotify
${inotify_home}/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -e close_write,modify,delete,create,attrib $master_src \
| while read file
do
echo $file
rsync -vzrtopg --progress /data/test/ --password-file=/etc/rsyncd.pass backup@10.1.1.85::nextcloud
done
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App