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 简洁而强大,熟练之后你会发现在备份、部署、迁移数据等场景中再也离不开它。
本文来自博客园,作者:bigroc,转载请注明原文链接:https://www.cnblogs.com/bigroc/p/19923399
blog:http://www.bigroc.cn 博客园:https://www.cnblogs.com/bigroc
浙公网安备 33010602011771号