当前位置: 首页 > news >正文

深入理解 rsync daemon 模式(守护进程)

🚀 深入理解 rsync daemon 模式(守护进程)

在日常的运维、构建和部署场景中,rsync 是一个高效而灵活的工具。除了我们常见的基于 ssh 的 rsync 用法,rsync 还提供了一个守护进程(daemon)模式,适用于高性能、长期服务型的文件同步需求,尤其适合企业内网的大规模文件同步、构建产物推送等自动化场景。


📌 什么是 rsync daemon 模式?

与传统的 rsync -e ssh 模式不同,daemon 模式是服务端常驻监听 TCP 873 端口的一种方式。客户端通过类似如下命令访问服务端:

rsync -av 文件路径 rsync://host:873/模块名/子路径/

或更常见的简写:

rsync -av 文件路径 host::模块名/子路径/

🔁 特别适用于内网环境,可以避免 ssh 握手的额外开销,提高效率。


⚙️ 配置 rsync 守护进程

1️⃣ 创建配置文件 /etc/rsyncd.conf

一个典型的配置文件如下:

uid = root
gid = root
port = 873

use chroot = yes
max connections = 200

pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log

hosts allow = 10.0.0.0/8
hosts deny = *

[ios_new_storage]
    path = /data1/ios
    read only = no
    list = true
    ignore errors = yes

🔍 字段说明:

字段含义
uid, gid守护进程读写文件使用的用户/组身份
port默认监听 873 端口
use chroot是否启用 chroot 限制路径(安全性考虑)
max connections最大并发连接数
hosts allow, hosts deny白名单与黑名单机制
[模块名]模块名,客户端通过 host::模块名 访问
path模块实际映射的目录
read only是否只读
list是否允许被 rsync host:: 列出来

🚀 启动守护进程

✅ 手动启动:

sudo rsync --daemon

可指定配置文件:

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

🔄 验证是否运行

ps aux | grep '[r]sync --daemon'
sudo lsof -i :873

📤 客户端访问示例

从构建机同步文件到 rsync 服务端:

rsync -av /local/file [IP地址]::ios_new_storage/your/path/

如果要列出服务端支持的模块:

rsync [IP地址]::

🔐 访问控制和权限

  • 建议配合 hosts allowhosts deny 限制访问来源。
  • 如果需要认证机制,还可以配置:
auth users = deployer
secrets file = /etc/rsyncd.secrets

并在 /etc/rsyncd.secrets 中:

deployer:your_password

客户端命令:

rsync -av /local/path deployer@host::module --password-file=/path/to/pass

⚠️ 注意:守护进程认证是明文密码,不建议在公网使用,建议配合内网环境或 VPN 使用。


🧯 常见问题排查

问题原因解决方案
connect refused守护进程未启动 / 端口未开放启动守护进程,确认 873 端口
unknown module模块名拼错或配置缺失查看 /etc/rsyncd.conf 中模块配置
无响应防火墙阻止确认防火墙规则允许 TCP 873

📎 Daemon 模式 vs SSH 模式

特性Daemon 模式SSH 模式
安全性适合内网 / VPN 使用通过 SSH 通信加密更安全
配置要求服务端需配置并启动守护进程无需服务端额外配置
性能更高(适合频繁传输)较低(有 ssh 握手)
认证机制明文(不加密)基于 SSH 密钥 / 密码

✅ Last

rsync 的 daemon 模式为构建系统、大规模数据同步提供了高效、稳定的方案。在可信网络或 VPN 环境中,它能够提供比 ssh 模式更快的性能,并且支持模块化管理,适合部署在 CI/CD 等自动化流程中。


http://www.dtcms.com/a/122551.html

相关文章:

  • 【简单理解什么是简单工厂、工厂方法与抽象工厂模式】
  • 【“星睿O6”AI PC开发套件评测】在O6开发板使用gemma-2b测试CPU性能
  • 测试用例 [软件测试 基础]
  • 加油站小程序实战教程10开通会员
  • 重构居家养老安全网:从 “被动响应” 到 “主动守护”
  • Windows上使用Qt搭建ARM开发环境
  • 如何在idea中快速搭建一个Spring Boot项目?
  • <项目代码>苹果识别<目标检测>
  • 从零到精通:Kafka学习路径全解析
  • 阅读MySQL实战45讲第9天
  • Windows + vmware + ubuntu+docker + docker-android实现Android模拟器构建和启动
  • Java——字符串(黑马个人听课笔记)
  • flutter开发音乐APP(前提准备)
  • 计算机网络笔记-分组交换网中的时延
  • 【挑战项目】 --- 微服务编程测评系统(在线OJ系统)(一)
  • MongoDB 的详细介绍
  • 网络基础2
  • 【含文档+PPT+源码】基于python爬虫的豆瓣电影、音乐、图书数据分析系统
  • Vue 基础语法介绍
  • 剑指Offer(数据结构与算法面试题精讲)C++版——day9
  • 探秘 Svelte+Vite+TS+Melt - UI 框架搭建,开启高效开发
  • Could not resolve com.google.guava:guava:32.1.1-jre.
  • 【设计模式】面向对象开发学习OOPC
  • vue、vue2、vue3
  • mamba学习1
  • 蓝桥杯填空题攻克
  • 【C++】二叉搜索树(二叉查找树、二叉排序树)详解
  • Go 微服务框架 | 路由实现
  • 【BFT帝国】20250409更新PBFT总结
  • idea手动创建resources文件夹