最近更新: 2026-07-09
rsync 自 1996 年起就在镜像文件夹,这是有原因的:双向同步、用滚动校验和只传输文件内部真正变化的字节的增量算法,以及几十年积累下来、覆盖各种边界情况的参数。如果你已经有 SSH 访问权限并且熟悉 rsync,它很难被超越。
Relayium 的 sync 命令只覆盖一个更窄的场景——单向增量镜像——但它省掉了 rsync 默认你已经做好的一步:搭建 SSH。它既可以跑在你已有的 SSH 之上,也可以让两台机器直接连接,完全不需要 SSH 服务。本文客观对比两者:sync 不是 rsync 的完整替代品,FAQ 里也会直说这一点。
rsync 是双向的——任意一端都可以作为源——它的增量传输算法用滚动校验和比较文件的数据块,因此对一个巨大文件做的小修改只会发送变化的数据块,而不是整个文件重传。再加上几十年积累的参数(--exclude、用于硬链接快照的 --link-dest、压缩、带宽限制等等),让它能胜任很多工作。
它也无处不在:大多数 Linux 和 macOS 系统自带 rsync,并且能跑在你大概率已经配置好的 SSH 连接上。这些都不是 Relayium sync 想要取代的东西。
relayium sync <源...> <目标> [--delete] [--watch] 是单向增量镜像:它比较每个文件的大小和修改时间,跳过已经一致的文件,只发送其余的。
它支持两种传输方式。指向 user@host:/dest 时走 SSH——但远端必须已经装好 relayium;和 push 不同,sync 没有 tar 兜底方案。指向 relayium://host[:port] 时则完全不需要 SSH:直接用锁定的 TLS 1.3 连接到对端机器上运行的 relayium serve 监听端,通过对端的指纹认证(首次批准,之后记住)。第二种方式才是真正的便利所在:不用配置 sshd,不用管理 SSH 密钥,只要两台机器都装了 relayium,并且之间有一个端口互通即可。
relayium sync ./photos user@host:/backup/photos # over SSH
relayium sync ./photos relayium://203.0.113.9:9031 # daemon direct, no SSH
默认情况下 sync 只新增和更新——绝不会自作主张删除任何东西。加上 --delete 才会镜像删除,但接收方必须主动开启:它必须以 relayium serve --allow-delete 运行。如果没有,删除请求会被拒绝并回报给发送方,而不是悄悄被忽略。
对于持续变化的文件夹,--watch 会让 sync 在第一次同步之后继续运行,只要源目录下有文件变化就重新镜像——这一点 rsync 并没有内置支持,通常你得借助 cron 任务或 lsyncd 这类封装工具。
relayium serve --dir /backup --port 9031 --allow-delete
relayium sync ./photos relayium://203.0.113.9:9031 --delete --watch
每个文件都会用 SHA-256 做端到端校验,传到一半被打断的传输会从磁盘上已有的字节偏移续传,而不是重新开始——这一点和 rsync 的续传出于同样的道理。
但要说清楚续传不是什么:它不是 rsync 的增量算法。如果一个文件已经完整存在,只是大小或时间戳不同,sync 会把它整个重传,而不是去比对内部变化的数据块。对于一个经常发生小改动的巨大文件,rsync 的增量传输会传更少的数据。sync 也只处理常规文件——符号链接和特殊文件会被跳过,依赖它们的场景需要另外处理。
当你需要双向同步、已经配好 SSH 不想再跑一个守护进程、需要精细控制(排除规则、过滤器、硬链接快照、带宽限制、压缩),或者某个文件经常发生小改动、增量传输能省下实打实的带宽时,选 rsync。这些都不是 Relayium sync 想要覆盖的场景。
不能。它只做单向镜像,也没有 rsync 那种基于数据块的增量算法——大小或时间戳变化的文件会被整个重传,参数也远少于 rsync。如果你需要双向同步、精细的过滤控制,或者依赖 rsync 成熟的生态,rsync 仍然是更好的工具。
不需要。守护进程直连(relayium://host:port)完全跳过 SSH:用锁定的 TLS 连接,通过接收方的指纹认证,批准一次之后就会被记住。你也可以选择走 SSH(user@host:path),前提是远端已经装了 relayium——但和 push 不同,sync 没有 tar 兜底。
只有在你传了 --delete、并且接收方的 serve 是以 --allow-delete 启动时才会。否则删除请求会被拒绝,并回报给发送方,不会被静默忽略。
可以,加上 --watch。完成首次镜像之后 sync 会继续运行,只要源目录下有文件变化(有防抖),就会重新镜像。
是的。Relayium CLI 完全免费,包括 sync 在内的任何模式都不需要账号。
在你自己的两台机器之间镜像一个文件夹——不需要 SSH 服务。
获取 CLI