rsync 异地备份怎么做?硬链接保留多版本又不重复占空间

rsync 异地备份怎么做?硬链接保留多版本又不重复占空间

每天把整个目录压缩一遍,文件多时既慢又浪费空间。rsync 配合 SSH 和硬链接,可以只传变化内容,同时保留按日期查看的多个快照。本文适合备份网站、Compose 配置和普通文件,不建议直接复制运行中的数据库目录。

哪些内容适合 rsync

适合静态文件、上传目录、配置、脚本和已经生成的数据库导出。不适合直接同步正在写入的 MySQL、PostgreSQL 数据目录,也不适合替代应用自身的一致性备份。

两台机器怎么配

源服务器负责生成备份,目标服务器负责保存。目标机 1 核 2G 就够,磁盘按生产数据的 2 到 3 倍规划。传输频繁时要关注出站流量和带宽。

我会用一台低配雨云服务器 rainyun-com 做独立备份节点,1 核 2G 加足够磁盘即可。注册填优惠码 2026off 领 5折,把备份和生产分开,比在同一块盘里复制一份更有意义。

基础同步

先创建专用 SSH 密钥和受限账号,再测试:

bash 复制代码
rsync -aHAX --delete --numeric-ids \
  -e 'ssh -i /root/.ssh/backup_ed25519' \
  /opt/apps/ backup@backup-host:/srv/backups/current/

--delete 会让目标与源一致,写错路径可能删除不该删的文件。第一次先加 --dry-run 查看影响范围。

用硬链接保留快照

每次同步前,把上一份快照作为 --link-dest 参考。未变化文件只创建硬链接,变化文件才占新空间。脚本需要认真处理日期、路径和失败退出,建议先在测试目录练习。

bash 复制代码
rsync -a --delete --link-dest=/srv/backups/latest \
  /data/ /srv/backups/2026-06-19/
ln -sfn /srv/backups/2026-06-19 /srv/backups/latest

验证和恢复

随机挑选文本、图片和配置做校验,再从某个日期快照恢复到临时目录。不要直接覆盖生产路径,先对比文件数量和权限。

常见坑

硬链接快照必须在支持硬链接的同一文件系统;Windows 共享盘和部分对象存储不适用。权限不足、目标盘满、SSH 密钥过期也会让任务悄悄失败,所以要保存日志并发送失败告警。

总结

rsync 增量备份的优势是传输少、恢复直观,但它仍需要专用账号、正确路径、日志和定期恢复测试。

想把备份真正放到异地,可以单独开一台雨云服务器 rainyun-com 作为目标端,注册填优惠码 2026off 领 5折。生产机坏掉时,独立备份节点才真正派得上用场。