Relayium

用 Relayium CLI 通过 SSH 把文件备份到自己的服务器

最近更新: 2026-08-05

如果你已经能 ssh 到某台机器上——VPS、家庭服务器、NAS、工作站都算——那就可以用 Relayium CLI 直接把文件备份过去,不用搭同步服务,也不用注册账号。传输走的是你现有的 SSH 连接,字节直接进你的服务器,从不经过 Relayium。

本文介绍怎么 push 和 pull 目录、断点续传与完整性校验各自能带来什么,以及如何用 cron 让它定时跑起来。

开始之前

下面用到的都是 relayium CLI,所以没装的话先装上。在 macOS 或 Linux 上,一条命令就能把预编译二进制放进你的 PATH:

curl -fsSL https://relayium.com/install.sh | sh

把一个目录 push 到你的服务器

你需要准备

  • 你已经在用的 SSH 访问权限。ssh user@your-server true 必须静默返回——push 复用的就是这条连接,它自己不做任何额外配置。
  • 服务器上一个可写的落点。目标路径的上一级目录必须存在,且那个 SSH 用户对它有写权限。
  • 服务器上可选装 relayium,它换来的是断点续传和逐文件 SHA-256。不装 push 也能用,走普通 tar 流。
  • 不需要 Relayium 账号,两端也都不需要跑守护进程。这里的一切都不会与 Relayium 的服务器通信。

push 接受一个或多个源,以及一个 scp 风格的目标地址。Relayium 会用你平常的密钥和配置通过 SSH 连过去,再把文件流式写入目标目录:

  1. 确认 push 将要复用的那条 SSH 访问。静默返回就说明你的密钥、主机别名和端口都已正确。

    ssh user@your-server true
  2. 查清你会走哪条协议。打印出路径就是原生协议——断点续传加逐文件 SHA-256;什么都不打印就是走 tar 流兜底。

    ssh user@your-server command -v relayium
  3. 把目录 push 上去。目标是 scp 风格的写法,末尾的斜杠表示“放进这个目录里”。

    relayium push ./photos user@your-server:backups/
  4. 如果你的 ssh 配置里还没有这台主机,就为这一条命令临时指定密钥或端口。

    relayium push -i ~/.ssh/id_ed25519 -p 2222 ./photos user@your-server:backups/
  5. 确认落地结果。push ./photos 会在目标下重建 photos/,所以文件夹名会一起带过去。

    ssh user@your-server ls backups/photos

成功时你会看到什么

走原生协议时,push 每传完一个文件打印一行,并以 0 退出。对着裸机服务器则只打印一行汇总——那是 tar 兜底,同样算成功。

relayium push ./photos user@your-server:backups/
  photos/IMG_0413.jpg (2314518 bytes)
  photos/IMG_0414.jpg (1998233 bytes)

# against a server with no relayium installed, one summary line instead:
sent 2 file(s) (zero-dependency mode)

把文件 pull 回来

恢复就是把同一条命令反过来写:给出一个远程源和一个本地目标目录。恢复备份,或者把服务器上的产物同步回笔记本,都用它:

relayium pull user@your-server:backups/ ./restore

断点续传与完整性校验都是内置的

备份往往体积很大,网络又常常掉线。两端都装了 relayium 时,中断的传输会在下次运行时从断点接着传,而不是重头再发一遍;每个文件还会用 SHA-256 哈希做端到端校验——落到服务器上的内容,和你发出去的逐字节一致。

如果你想放弃续传、做一次干净的完整重发,加上 --no-resume 即可。

用 cron 定时运行

push 是一条用你自己 SSH 密钥的非交互式命令,所以可以原样放进 cron 做定期备份。给它指定一个没有口令的密钥(或者用 agent),并把输出记下来,好让失败能被看见:

# 每晚 2 点备份——加到你的 crontab 里(crontab -e)
0 2 * * * relayium push -i ~/.ssh/backup_key ~/documents user@your-server:backups/ >> ~/relayium-backup.log 2>&1

备份没落地的时候

定时备份天生就是悄无声息地失败的——没人盯着终端。下面四种覆盖了几乎全部情况,而且每一种都能用一条你现在就能跑的命令定性。

现象、检查、修复

cron 任务卡住,或者日志停在一个输入密码的提示上。
ssh -i ~/.ssh/backup_key -o BatchMode=yes user@your-server true
# Permission denied (publickey).

BatchMode=yes 会拒绝弹出提示,于是把静默的卡死变成了这一行。把这把密钥的公钥加到服务器的 ~/.ssh/authorized_keys 里,或者让任务改用 agent 已经持有的那把密钥。

crontab 那行跑了,日志却始终是空的。
command -v relayium
# /usr/local/bin/relayium

cron 用的是一份极简 PATH,通常不含 /usr/local/bin,所以那行在 relayium 启动之前就失败了。把刚才查出来的绝对路径写进 crontab 条目里,并保留 >> ~/relayium-backup.log 2>&1 重定向,好让下一次失败看得见。

被中断的传输,下一次运行时从零重来。
ssh user@your-server command -v relayium
# (什么都不打印)

断点续传是原生协议的能力,远端没有 relayium 就意味着走 tar 流兜底,而它每次都把文件整份重发。在服务器上装好它就能拿到逐文件续传——同时确认你没有传 --no-resume,那个参数就是用来关掉它的。

出现 “N file(s) failed integrity check”,并以非 0 退出。
relayium push ./photos user@your-server:backups/
# 1 file(s) failed integrity check: [photos/IMG_0413.jpg]
echo $?
# 1

落地时算出的 SHA-256 与发送时的不一致,所以服务器上的那个文件不可信。重新 push 一次并再看一次退出码;如果同一个文件反复失败,就单独 push 这一个文件,把源文件坏了和链路坏了区分开。

常见问题

文件会经过 Relayium 的服务器吗?

不会。push 和 pull 完全跑在你自己的 SSH 连接上。Relayium 的服务器全程不参与,也不需要账号。

服务器需要装 relayium 吗?

要看方向。对 push 来说是可选的:远端装了 relayium 就能走原生协议——支持断点续传,并对每个文件做 SHA-256 校验;没装的话,push 会退回到通过 SSH 传输 tar 流,依然可用,只是每个文件每次都完整发送。对 pull 来说则是必须的:pull 始终需要远端装有 relayium(它没有 tar 兜底方案),请先在远端装好。

它怎么决定用哪个 SSH 密钥和端口?

它会像 ssh 一样读取你的 ~/.ssh/config,所以主机别名、密钥和端口都会被自动识别。你也可以在单条命令里用 -i 指定身份文件、用 -p 指定端口来覆盖它们。

这比 rsync 快吗?

在推送到自己服务器这件事上,速度和走 SSH 的 rsync 差不多。重点不是跑赢 rsync,而是让你只用一个工具,就能顺带做跨网络传输和服务器之间的传输,而且续传与完整性保证完全一致。

用最直接的方式备份你的下一个目录——走你自己的 SSH,支持断点续传、完整性校验,而且免费。

获取 CLI

继续阅读