Rsync 入门:高效同步与镜像备份

以下是一篇关于 rsync 的简明文章,涵盖基础用法、增量同步与结果镜像,适合快速入门。


Rsync 入门:高效同步与镜像备份

什么是 rsync?

rsync(remote sync)是一个在 Linux/Unix 系统中非常经典的文件同步工具。它最大的亮点是增量传输——只传输文件中发生变化的部分,而不是整个文件重传,因此特别节省带宽和时间。无论是本地目录的复制、远程服务器的备份,还是制作完全一致的镜像,rsync 都能胜任。

安装

大多数发行版都已预装 rsync。如果没有,可以用包管理器安装:

# Debian/Ubuntu
sudo apt install rsync

# CentOS/RHEL
sudo yum install rsync

# macOS
brew install rsync

基础用法

rsync 的基本语法是:

rsync [选项] 源路径 目标路径
  • 源路径 可以是本地目录,也可以是远程地址(如 user@host:/path)。
  • 目标路径 同理。

1. 本地同步(复制)

将本地文件夹 project/ 复制到 /backup/ 下:

rsync -av project/ /backup/project/
  • -a(archive)是归档模式,相当于 -rlptgoD,能递归复制并保留权限、时间戳、软链接等属性。
  • -v(verbose)显示详细信息。

注意:源路径尾部有没有 / 会影响行为。

  • project/ 表示将此目录内部的所有内容同步过去。
  • project(没有斜杠)会连 project 目录本身一起同步,在目标处会多出一层 project 目录。

2. 远程同步(通过 SSH)

将本地文件推送到远程服务器:

rsync -avz /local/data/ user@192.168.1.10:/remote/backup/
  • -z 在传输时压缩数据,适合网络速度较慢的场景。

从远程拉取文件到本地:

rsync -avz user@192.168.1.10:/remote/logs/ /local/logs/

增量同步:只传变化的部分

rsync 默认就是增量同步。当再次执行相同的同步命令时,它会比较源和目标两侧文件的差异(基于文件大小、修改时间或校验和),只把新增或修改过的部分传输过去。已经存在且未变化的文件会被直接跳过。

例如,你在 project/ 中只修改了一个 2GB 的虚拟机镜像文件的一小部分,再次运行:

rsync -av project/ /backup/project/

rsync 不会重新传输整个 2GB 文件,而是只传输改动过的数据块,效率非常高。

如果你希望能看到更直观的进度和传输统计,可以加上 -P 选项:

rsync -avP project/ /backup/project/

-P 相当于 --progress --partial,既显示进度条,又支持断点续传(保留未传完的部分文件)。

结果镜像:让目标与源完全一致

很多时候,我们不仅要把新文件同步过去,还希望目标目录是源的精确镜像——源里删掉的文件,目标中也应随之删除;源里没有的多余文件,目标中也不能存在。这就是“镜像”的效果。

rsync 提供了 --delete 选项来实现这一点:

rsync -av --delete project/ /backup/project/

执行后:

  • 目标 /backup/project/ 会变得和源 project/ 完全一样。
  • 如果目标中存在源已经删掉的文件,这些多余文件会被从目标中删除。

⚠️ 重要提醒--delete 非常强大,但也非常危险。尤其是在目标路径写错的时候,可能误删重要数据。建议首次使用时先用 --dry-run (试运行)看一看会发生什么:

rsync -av --delete --dry-run project/ /backup/project/

--dry-run 会让 rsync 只模拟执行,不真的修改或删除任何文件,输出的信息告诉你“如果执行,会做什么”。确认无误后再去掉该选项正式同步。

常用选项总结

选项 作用
-a 归档模式,递归并保留属性
-v 详细输出
-z 传输时压缩
-P 显示进度 + 断点续传
--delete 删除目标中多余文件,达到镜像效果
--exclude 排除指定文件或目录
--include 仅包含匹配的文件
--max-size 限制同步文件的最大大小
--bwlimit 限速,单位 KB/s,例如 --bwlimit=5000
--dry-run 模拟运行,不实际修改文件

示例:同步时排除日志文件、限速 2MB/s:

rsync -avP --delete --exclude='*.log' --bwlimit=2000 project/ /backup/project/

进阶提示

  • 使用校验和比较:默认 rsync 根据大小和时间戳判断文件是否变化。如果你想基于文件内容的校验和(md5)来比较,可加上 -c,更准确但更慢。
  • 远程 shell 指定:默认使用 SSH,可通过 -e 选项自定义,如 -e "ssh -p 2222" 指定端口。
  • 同步到本地后自动删除源文件--remove-source-files 可在传送成功后删除源文件(类似移动操作,需谨慎)。

小结

  • 基础用法rsync -av 源 目标,搞定本地 / 远程复制。
  • 增量同步:天生只传差异,反复执行也高效。
  • 结果镜像:加上 --delete 让目标完全等于源,先用 --dry-run 确认。
  • 安全习惯:始终在正式执行前用 --dry-run 验证,尤其是带 --delete 的命令。

rsync 简洁而强大,熟练之后你会发现在备份、部署、迁移数据等场景中再也离不开它。

posted @ 2026-04-24 14:57  bigroc  阅读(17)  评论(0)    收藏  举报