rsync 文件同步与备份教程：增量传输、异地备份一次搞懂

rsync 文件同步与备份教程 rsync 是一款在 Linux/macOS 上广泛使用的文件同步工具，也被称为"增量复制"神器。它最大的特点是：只传输发生变化的部分，而不是每次都整份重传，所以特别适合做备份、镜像和远程同步。本教程所有参数均依据 rsync 官方手册（man page，3.4.x 版本）整理。一、rsync 能做什么本地同步：把一个目录同步到另一个目录，常用作备份远程同步：通过 SSH 在不同机器之间传输文件增量传输：只传变化的块，节省流量和时间断点续传：中断后可以接着传，不必从头开始保留属性：保留文件权限、时间戳、软链接等元数据二、安装大部分 Linux 发行版和 macOS 都自带 rsync，可用以下命令确认： rsync --version 如果没装，常见的安装方式： # Debian / Ubuntu sudo apt install rsync # CentOS / RHEL sudo yum install rsync # macOS（Homebrew） brew install rsync 三、基本语法 rsync 的基本格式为： rsync [选项] 源 目标例如，把本地 source/ 目录同步到 backup/： rsync -av source/ backup/ 注意：源路径末尾的斜杠 / 很关键。 rsync -av source/ backup/：把 source 目录里的内容复制到 backup/ 下 rsync -av source backup/：把 source 这个目录本身复制到 backup/ 下，结果是 backup/source/ 四、核心参数详解以下是最常用的选项（官方手册中的字母选项）：选项含义 -a 归档模式（archive），等于 -rlptgoD，保留权限、时间、软链接等，备份必加 -v 显示详细信息（verbose） -z 传输时压缩（compress），适合慢速网络 -h 以人类可读的格式显示大小（human-readable） --progress 显示每个文件的传输进度 -P 等于 --partial --progress，支持断点续传并显示进度 -n / --dry-run 模拟运行，只显示会做什么，不真正执行 --delete 删除目标中源里已不存在的文件，实现"镜像" --exclude 排除匹配的文件/目录 --include 包含匹配的文件/目录最推荐的备份组合 rsync -avhP source/ backup/ 拆解含义：归档模式保留属性 + 显示详情 + 人类可读 + 断点续传并显示进度。这是最常用的备份命令。五、本地备份实例把家目录下的一个文档目录备份到移动硬盘（或另一块盘）的挂载点： rsync -avhP --delete ~/Documents/ /media/backup/Documents/ 加了 --delete 之后，/media/backup/Documents/ 会严格保持和 ~/Documents/ 完全一致——源里删掉的文件，备份里也会被删掉。首次使用 --delete 前，强烈建议先用 --dry-run 演练一遍： rsync -avhP --delete --dry-run ~/Documents/ /media/backup/Documents/ 六、排除目录备份时经常要跳过一些没用的目录，比如 .git、node_modules、缓存等： rsync -avhP --exclude 'node_modules' --exclude '.git' --exclude '*.log' source/ backup/ --exclude 支持通配符，比如 *.log 排除所有后缀为 .log 的文件，cache/ 排除名为 cache 的目录。多个排除规则也可以写到文本文件里（每行一条），用 --exclude-from 引用： # 文件 exclude.txt 内容： # .git # node_modules # *.tmp rsync -avhP --exclude-from=exclude.txt source/ backup/ 七、远程同步（通过 SSH）配合 SSH 可以把文件同步到远程服务器，或从服务器拉取： # 推送：把本地目录推到远程服务器 rsync -avhP -e ssh localdir/ user@服务器IP:/远程路径/ # 拉取：从远程服务器拉到本地 rsync -avhP -e ssh user@服务器IP:/远程路径/ localdir/ 其中 -e ssh 指定使用 SSH 传输（默认就是 SSH，但显式写出来更清晰）。如果你的 SSH 用了非 22 端口或特定密钥，可以写成： rsync -avhP -e "ssh -p 2222" localdir/ user@服务器:/远程路径/ 使用 SSH 传输时数据会被加密，是安全的远程同步方式。八、断点续传传输大文件突然中断时，用 -P（即 --partial --progress）可以让 rsync 保留已传的部分，下次继续： rsync -avhP source/ backup/ 中断后再次执行完全相同的命令，rsync 会自动跳过已完成的文件、续传中断的文件。九、总结场景推荐命令日常备份（保留属性） rsync -avhP source/ backup/ 严格镜像（源删目标也删） rsync -avhP --delete source/ backup/ 先演练再执行加上 --dry-run 远程备份/同步 rsync -avhP -e ssh source/ user@IP:/path/ 排除无效文件加上 --exclude 或 --exclude-from=文件 rsync 是备份三件套（rsync + cron + 脚本）中的核心，配合定时任务（cron）就能实现全自动定期备份。掌握上面这几个参数，已经能覆盖绝大部分日常同步与备份需求。