Openrsync: An implementation of rsync, by the OpenBSD team

443 points · 162 comments on HN · read original →

OpenBSD team releases openrsync, a BSD-licensed rsync reimplementation compatible with modern rsync protocol.

Openrsync is a BSD (ISC) licensed implementation of rsync written for the RPKI validator rpki-client(1) and now merged into OpenBSD base. It supports rsync protocol 27 and is compatible with modern rsync versions but accepts only a subset of command-line arguments. The tool was funded by NetNod, IIS.SE, SUNET, and 6connect.

The implementation uses a sender-receiver model where files are synchronized via block exchange. Block sizes are calculated as the square root of file size (minimum 700 bytes, rounded to nearest multiple of eight). The receiver and sender independently sort file lists lexicographically, then exchange block metadata using fast Adler-32 hashes and slower MD4 hashes. Openrsync uses event-driven architecture rather than rsync's separate generator process.

Security relies on OpenBSD's pledge(2) and unveil(2) syscalls to limit system operations and filesystem access. The tool is officially supported on OpenBSD but portable to Linux, FreeBSD, NetBSD, macOS, and OmniOS via oconfigure. Portability challenges center on replicating OpenBSD's security features on other systems.

What HN community is saying

Comments focus on missing features and licensing philosophy. Exclude support was absent in OpenBSD 7.8 but added by 7.9, though commenters note it is commonly used in automation and would be a showstopper without it. A secondary thread debates openrsync's use of "open" in the name, with commenters noting OpenBSD projects (openssh, openbgpd) commonly use the prefix, though most are reimplementations of already open-source tools rather than closed alternatives. Unrelated subthread objected to suspected AI involvement in the original rsync project, with mixed sentiment on whether avoiding AI tools is practical or worthwhile.