Hacker News 中文摘要

RSS订阅

Openrsync:OpenBSD团队开发的rsync实现 -- Openrsync: An implementation of rsync, by the OpenBSD team

文章摘要

该项目是采用BSD许可证的rsync实现,已并入OpenBSD系统,支持现代rsync协议但功能有所精简。主要面向OpenBSD开发,也可在其他UNIX系统运行,提供详细文档和协议说明供开发者参考。

文章总结

以下是经过编辑整理的中文内容:

项目名称:openrsync - 采用BSD许可证的rsync实现

项目概述: openrsync是一个基于BSD(ISC)许可证的rsync协议实现,兼容现代rsync版本(测试使用3.1.3版本,支持协议27)。该项目已并入OpenBSD基础系统,开发者可通过tech@openbsd.org提交补丁。

核心功能: 1. 支持基础rsync功能,但仅接受部分命令行参数 2. 主要支持OpenBSD系统,但也可在其他UNIX系统编译运行 3. 提供完整的手册页文档(rsync.5/rsyncd.5/openrsync.1)

技术实现: 1. 算法架构: - 采用经典的发送方(sender)和接收方(receiver)模型 - 文件列表通过flist.c实现共享 - 接收方实现位于receiver.c,发送方在sender.c - 块交换核心逻辑在blocks.c中实现

  1. 块交换流程:
  • 符号链接:直接使用文件列表元数据更新
  • 目录:创建不存在的目录
  • 常规文件:
    • 通过Adler-32和MD4双重哈希校验(见hash.c)
    • 块大小采用文件大小的平方根计算(最小700B)
    • 使用block.c实现块匹配操作
  1. 系统架构:
  • 采用客户端-服务器模型
  • 通过main.c处理本地/远程路径检测
  • 客户端实现在client.c,服务器端在server.c
  • 使用socket.c处理守护进程连接

安全特性: 1. 全面应用OpenBSD安全机制: - 使用pledge(2)限制系统操作权限 - 采用unveil(2)约束文件系统访问 - 使用arc4random(3)生成MD4哈希种子

与官方rsync的区别: 1. 将生成器(generator)和接收方合并为单一进程 2. 采用事件循环提高IO响应速度

移植性说明: 1. 官方仅支持OpenBSD系统 2. 通过oconfigure支持Linux/FreeBSD/NetBSD等系统 3. 依赖类似pledge/unveil的安全机制 4. 项目代码约1万行,强调安全设计

安装方法: 1. 基础安装: ./configure make make install 2. 支持与原生rsync并存使用 3. 提供卸载和服务器交互指令

项目背景: 由NetNod等机构资助,最初为rpki-client项目开发。

(注:删减了部分技术实现细节和示例命令,保留了核心架构描述和安全特性说明,使内容更加紧凑聚焦。)

评论总结

评论总结:

  1. 功能支持讨论
  • 作者jmclnx指出OpenBSD 7.9已支持--exclude参数:"--exclude is now supported on 7.9"
  • 关于AI代码的担忧:"postfix now has a bit of AI code in it"
  1. 安全性质疑
  • Bender强调安全功能的重要性:"pledge(2) and unveil(2) are critical elements"
  • tptacek质疑rsync的安全风险:"rsync pumps arbitrary data from the network onto your file-system"
  1. 命名争议
  • WD-42对项目命名提出疑问:"Openrsync implies...an open source alternative to a closed source program"
  • 指出原rsync的许可问题:"original Rsync is GPL?"
  1. 替代方案
  • denysvitali提到Go语言实现:"Go implementation by Michael Stapelberg"
  • thefilmore说明macOS使用情况:"version used in macOS since 15.0"
  1. 其他观点
  • skeledrew对抵制AI持观望态度:"weird kind of reverse whack-a-mole"
  • tptacek对安全警告的保留意见:"this snagged me in the README"

注:所有评论评分均为None(无赞同数显示),讨论涉及技术细节、安全考量和替代方案等多个方面。