skip to content
Liu Yang's Blog

几种常见的同步/备份工具记录

/ 7 min read

Table of Contents

前言

经常遇到各种备份的场景。最近因为服务器到期,需要把数据迁到另一台机器上,顺手做个记录,权当备忘。

维度rsyncrcloneresticsyncthingSFTP
本质同步算法 + 工具云存储客户端备份系统P2P 同步软件文件传输协议
层级应用应用应用应用协议(SSH 子系统)
同步方向单向单向 / bisync单向(备份)双向无”同步”概念,只传文件
增量传输✅ delta 算法✅ 块级❌ 整文件传输
去重 / 快照⚠️ 版本保留
加密靠 SSH✅ 强制✅ TLS✅ SSH 加密
实时同步
典型用途镜像 / 同步目录推云盘备份历史多设备一致远程读写文件

我的理解

1. rsync —— 增量同步的事实标准

核心是 delta 传输算法:只传变化的字节,不传整份文件。基于 SSH 即开即用,几乎所有 Linux 发行版默认自带。一句话:Linux 世界里同步目录的默认答案,历经几十年验证,无需多言。

常用命令:

Terminal window
# 黄金组合:归档模式 + 显示进度 + 压缩传输
rsync -avzP /src/ user@host:/dst/
# 镜像同步(目标端多余的文件会被删掉,慎用)
rsync -avz --delete /src/ user@host:/dst/
# 断点续传 + 部分文件保留(传大文件必加)
rsync -avzP --partial --append-verify /src/ user@host:/dst/
# 排除某些目录/文件
rsync -avz --exclude='node_modules' --exclude='*.log' /src/ /dst/
# 只看会传哪些,不真的传(演练)
rsync -avzn /src/ /dst/

💡 路径末尾那个 / 很重要:/src/ 表示传”目录里的内容”,/src 表示传”目录本身”。踩过坑的都懂。

2. rclone —— 云存储的瑞士军刀

支持 70+ 种云后端(S3、OneDrive、Google Drive、阿里云盘等),统一的命令行接口。挂载云盘为本地目录、跨云迁移、加密上传,它都能做。一句话:只要沾上”云”字,先想到它准没错

常用命令:

Terminal window
# 配置一个新的远程后端(交互式)
rclone config
# 列文件 / 看大小
rclone ls remote:bucket/path
rclone size remote:bucket/path
# 同步:把本地推到云端(目标端多余文件会删)
rclone sync /local/path remote:bucket/path -P
# 复制:只增不删,更安全
rclone copy /local/path remote:bucket/path -P
# 双向同步(需要先 --resync 初始化一次)
rclone bisync /local/path remote:bucket/path
# 把云盘挂成本地目录
rclone mount remote:bucket/path /mnt/cloud --daemon

💡 synccopy 的区别一定要搞清,前者会删文件。加 --dry-run 先演练一遍是好习惯。

3. restic —— 真正”备份”语义的工具

和前两者根本不是一类东西。CDC 分块 + 全局去重 + 强制加密 + 快照机制 —— 这套设计就是为”我要恢复到三周前周二那个状态”而生的。仓库后端可选本地、SFTP、S3、B2 等。一句话:rsync 做的是同步,restic 做的才是备份

常用命令:

Terminal window
# 设环境变量省得每次输密码和路径
export RESTIC_REPOSITORY="sftp:user@host:/backup/repo"
export RESTIC_PASSWORD="your-password"
# 初始化仓库(只需一次)
restic init
# 创建一个快照
restic backup /home/user --exclude='*.cache'
# 看所有快照
restic snapshots
# 恢复某个快照到指定目录
restic restore <snapshot-id> --target /tmp/restore
# 按策略清理旧快照(保留最近 7 天 + 最近 4 周 + 最近 6 月)
restic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 6 --prune
# 校验仓库完整性
restic check

💡 密码丢了仓库就废了,没有任何后门。务必用密码管理器存好。

4. syncthing —— 私有的 Dropbox

P2P 直连,数据不经过中心服务器;发现 / 中继节点官方维护,也可自建。多设备实时双向同步,开源、跨平台、零月费。一句话:对隐私敏感的人,自托管 Dropbox 的最优解

常用操作(主要靠 Web UI,命令不多):

Terminal window
# 启动(会在 127.0.0.1:8384 起一个 Web UI)
syncthing
# 后台运行,日志写文件
syncthing --no-browser --logfile=/var/log/syncthing.log &
# 看本机的设备 ID(添加到对端时用)
syncthing --device-id
# 服务器上反代时绑到所有网卡
syncthing --gui-address=0.0.0.0:8384

💡 日常添加文件夹、配对设备、改同步策略,都在 Web UI 里点几下就行,没必要硬背命令。

5. sftp / scp —— 协议级的最低公分母

严格说 SFTP 是个协议(SSH 的子系统),scp 也只是借 SSH 跑了一次 cp。没有增量、没有去重、没有花哨功能,但任何能 SSH 的机器,开箱即用。一句话:临时传几个文件,别想太多,scp 就完事。

常用命令:

Terminal window
# scp:一条命令传完
scp file.txt user@host:/remote/path/ # 上传
scp user@host:/remote/file.txt ./ # 下载
scp -r mydir/ user@host:/remote/path/ # 传整个目录
scp -P 2222 file.txt user@host:/path/ # 指定端口(注意大写 P)
# sftp:进入交互式 shell,适合多次操作
sftp user@host
> ls # 看远端
> lls # 看本地(前面加个 l)
> put file.txt # 上传
> get file.txt # 下载
> bye # 退出

💡 OpenSSH 9.0 起 scp 默认改用 SFTP 协议了,行为更安全;但传超大文件依旧推荐 rsync。


本文由 Claude 润色。