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