rsync
增量同步文件和目录,只传输变化的部分,支持本地和远程同步
语法
rsync [options] source destination
参数
| 参数 | 说明 | 示例 | 级别 |
|---|---|---|---|
-a |
归档模式(保留权限、时间戳、符号链接等) | |
常用 |
-v |
显示详细传输信息 | |
常用 |
-z |
传输时压缩数据 | |
常用 |
--delete |
删除目标中源端不存在的文件 | |
常用 |
-n |
模拟运行(不实际传输,用于预览) | |
常用 |
--exclude |
排除匹配的文件或目录 | |
常用 |
-P |
显示进度并支持断点续传 | |
常用 |
示例
同步本地目录到远程服务器
rsync -avz ./project/ user@server:/opt/project/
完全镜像同步(删除目标多余文件)
rsync -avz --delete src/ dest/
同步代码排除依赖和版本控制目录
rsync -avz --exclude='node_modules' --exclude='.git' ./ remote:/app/
传输大文件并显示进度(支持断点续传)
rsync -avzP large-file.iso user@server:/data/
预览同步操作(不实际执行)
rsync -avn --delete src/ dest/
技巧
- 源路径末尾有 / 表示同步目录内容,没有 / 表示同步目录本身
- 首次用 -n 预览确认无误后再实际执行
- --delete 要谨慎,建议先 -n 预览
- 比 scp 更高效:只传输差异部分,适合增量备份