banner
约 1,200 字
4 分钟

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

摘要

rsync 是一款强大的文件同步与备份工具,支持增量传输、断点续传、远程同步,广泛用于备份与镜像。本教程基于 rsync 官方手册,详细介绍常用参数(-a -v -z --delete 等)、本地与远程同步、SSH 传输、排除目录等实用技巧。

rsync 文件同步与备份教程

rsync 是一款在 Linux/macOS 上广泛使用的文件同步工具,也被称为"增量复制"神器。它最大的特点是:只传输发生变化的部分,而不是每次都整份重传,所以特别适合做备份、镜像和远程同步。

本教程所有参数均依据 rsync 官方手册(man page,3.4.x 版本)整理。

一、rsync 能做什么

  • 本地同步:把一个目录同步到另一个目录,常用作备份

  • 远程同步:通过 SSH 在不同机器之间传输文件

  • 增量传输:只传变化的块,节省流量和时间

  • 断点续传:中断后可以接着传,不必从头开始

  • 保留属性:保留文件权限、时间戳、软链接等元数据

二、安装

大部分 Linux 发行版和 macOS 都自带 rsync,可用以下命令确认:

bash
rsync --version

如果没装,常见的安装方式:

bash
# Debian / Ubuntu
sudo apt install rsync

# CentOS / RHEL
sudo yum install rsync

# macOS(Homebrew)
brew install rsync

三、基本语法

rsync 的基本格式为:

bash
rsync [选项] 源 目标

例如,把本地 source/ 目录同步到 backup/

bash
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

包含匹配的文件/目录

最推荐的备份组合

bash
rsync -avhP source/ backup/

拆解含义:归档模式保留属性 + 显示详情 + 人类可读 + 断点续传并显示进度。这是最常用的备份命令。

五、本地备份实例

把家目录下的一个文档目录备份到移动硬盘(或另一块盘)的挂载点:

bash
rsync -avhP --delete ~/Documents/ /media/backup/Documents/

加了 --delete 之后,/media/backup/Documents/ 会严格保持和 ~/Documents/ 完全一致——源里删掉的文件,备份里也会被删掉。首次使用 --delete 前,强烈建议先用 --dry-run 演练一遍

bash
rsync -avhP --delete --dry-run ~/Documents/ /media/backup/Documents/

六、排除目录

备份时经常要跳过一些没用的目录,比如 .gitnode_modules、缓存等:

bash
rsync -avhP --exclude 'node_modules' --exclude '.git' --exclude '*.log' source/ backup/

--exclude 支持通配符,比如 *.log 排除所有后缀为 .log 的文件,cache/ 排除名为 cache 的目录。

多个排除规则也可以写到文本文件里(每行一条),用 --exclude-from 引用:

bash
# 文件 exclude.txt 内容:
# .git
# node_modules
# *.tmp

rsync -avhP --exclude-from=exclude.txt source/ backup/

七、远程同步(通过 SSH)

配合 SSH 可以把文件同步到远程服务器,或从服务器拉取:

bash
# 推送:把本地目录推到远程服务器
rsync -avhP -e ssh localdir/ user@服务器IP:/远程路径/

# 拉取:从远程服务器拉到本地
rsync -avhP -e ssh user@服务器IP:/远程路径/ localdir/

其中 -e ssh 指定使用 SSH 传输(默认就是 SSH,但显式写出来更清晰)。如果你的 SSH 用了非 22 端口或特定密钥,可以写成:

bash
rsync -avhP -e "ssh -p 2222" localdir/ user@服务器:/远程路径/

使用 SSH 传输时数据会被加密,是安全的远程同步方式。

八、断点续传

传输大文件突然中断时,用 -P(即 --partial --progress)可以让 rsync 保留已传的部分,下次继续:

bash
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)就能实现全自动定期备份。掌握上面这几个参数,已经能覆盖绝大部分日常同步与备份需求。

END