Relayium

用 cron 任务自动化加密的服务器备份

最近更新: 2026-07-09

需要你记得手动运行的备份,常常就不会发生。cron 会记得,而 Relayium CLI 正是为此而生:一条非交互式命令,把目录复制(或镜像)到另一台机器,校验每一个文件,并且在网络中断时从断点继续。

本文介绍如何用 cron 定时运行 relayium push 和增量的 relayium sync、两者都能使用的两种传输方式,以及可以直接复制使用的 crontab 行。

push 与 sync:整体复制还是增量镜像

push 和 sync 都能把一个目录传送到另一台机器,也都可以放心地反复运行,但它们解决的备份问题略有不同。

每次运行 push 都会通过 SSH 或 daemon-direct 发送一份完整拷贝——简单直接,即使远端服务器没装 relayium,也能靠 tar 兜底方案工作。sync 则把目标目录维护成源目录的增量单向镜像:只重新发送发生变化的文件,所以对一个大目录做第一次同步之后,后续的夜间同步会很快。sync 始终需要两端都用 relayium 的原生协议——它没有 tar 兜底方案。

两种传输方式:SSH 或 daemon-direct

两个命令都可以指向一个 SSH 目标(scp 风格,使用你的 ~/.ssh/config),也可以在对方机器运行着 relayium serve 时,直接通过 daemon-direct 协议连接过去——不需要 SSH。

# SSH destination — uses your existing SSH keys and config
relayium push ./data user@backup-server:/srv/backups/

# daemon-direct — the destination runs "relayium serve", no SSH required
relayium push ./data relayium://backup-server:9031

用 cron 定时运行

push 和 sync 都是单条非交互式命令,可以直接放进 crontab。给它指定一个没有口令的密钥(或者用 agent),并把输出记录下来以便查看失败:

# full copy every night at 2am — add to your crontab (crontab -e)
0 2 * * * relayium push -i ~/.ssh/backup_key ~/documents user@backup-server:/srv/backups/ >> ~/relayium-backup.log 2>&1

# incremental mirror every 15 minutes instead
*/15 * * * * relayium sync -i ~/.ssh/backup_key ~/documents user@backup-server:/srv/backups/ >> ~/relayium-sync.log 2>&1

镜像删除与实时同步

默认情况下,sync 只会在目标端新增或更新文件。加上 --delete 就会变成真正的镜像,把源目录中已经不存在的文件也从目标端删除——接收端必须显式以 serve --allow-delete 方式监听,否则这些删除操作会被静默跳过,并在结果里报告为被拒绝。如果源目录解析不到任何文件,sync 也会直接拒绝执行 --delete,这样源路径写错也不会清空目标目录。

如果不想等 cron 的下一个执行时间点,--watch 会让 relayium sync 持续运行,一旦源目录下有文件变化,就会在片刻之后自动重新同步——是按计划轮询之外的一种轻量替代方案。

常见问题

备份服务器需要装 relayium 吗?

要看命令。push 不管远端有没有装都能用:装了 relayium 就用原生协议(断点续传 + 每个文件 SHA-256 校验);没装的话,push 会退回到通过 SSH 传输 tar 流,一台裸服务器也能用。sync 则始终需要远端有 relayium 的原生协议——sync 没有 tar 兜底方案,请先在远端装好它。

备份会加密并校验吗?

会。每个文件都会做端到端的 SHA-256 校验,而通过 SSH 或 daemon-direct 推送时,字节已经受该连接自身的加密保护——不需要额外配置。

如果 cron 任务在执行到一半时被中断会怎样?

只要两端都有 relayium,下一次计划运行就会续传未完成的文件,而不是重新发送全部内容。如果你想放弃续传、做一次干净的完整重发,加上 --no-resume 即可。

--delete 会不会不小心清空我的目标目录?

如果源目录里没有任何文件,sync 会直接拒绝执行 --delete;而且接收端必须以 serve --allow-delete 方式启动,删除操作才会真正生效——否则会被跳过,并把结果报告给你。

需要账号吗,这个要收费吗?

不需要。CLI 完全免费,push、pull、sync 都不需要账号——传输走的是你自己的 SSH 连接或直接的 daemon 连接,不经过 Relayium 的服务器。

把备份放进一个你不用记得的日程里——加密传输、支持断点续传,而且免费。

获取 CLI

继续阅读