当前位置:首页>Linux>Linux命令每日一清单043:rsync--远程同步命令速查表

Linux命令每日一清单043:rsync--远程同步命令速查表

  • 2026-10-11 08:37:24
Linux命令每日一清单043:rsync--远程同步命令速查表

rsync是一个快速、多功能的文件同步工具,能够在本地或通过远程Shell(如SSH)在两个位置之间高效同步文件和目录。其核心算法只传输文件的差异部分,大大减少了数据传输量,特别适合备份、镜像、大规模文件分发等场景。

rsync支持增量传输、断点续传、压缩传输、权限保留、排除模式等功能,是系统管理员进行数据备份和迁移的首选工具。与scp或cp相比,rsync在处理大量文件或大文件时效率更高,尤其适合重复同步的场景。掌握rsync是现代Linux运维的核心技能。

1. 基本语法

命令说明
rsync [options] source dest
本地同步
rsync [options] source user@host:dest
本地到远程
rsync [options] user@host:source dest
远程到本地
rsync [options] user@host:source user2@host2:dest
远程到远程

2. 本地同步示例

命令说明
rsync -a src/ dest/
镜像src内容到dest(不创建src目录)
rsync -a src dest/
将src目录复制到dest内(保留目录名)
rsync -av src/ dest/
详细输出同步过程
rsync -a --delete src/ dest/
删除dest中src没有的额外文件
rsync -av --dry-run src/ dest/
预览同步内容(不实际执行)
rsync -a --delete --dry-run src/ dest/
预览删除操作

注意: 源路径末尾的/表示复制目录内容,不带/表示复制目录本身。

3. 远程SSH同步

命令说明
rsync -a src/ user@host:/path/
本地到远程
rsync -a user@host:/path/ dest/
远程到本地
rsync -a -e "ssh -p 2222" src/ user@host:/path/
自定义SSH端口
rsync -a -P src/ user@host:/path/
显示进度 + 支持断点续传
rsync -a --partial src/ user@host:/path/
保留部分传输的文件
rsync -a -e "ssh -i ~/.ssh/key" src/ user@host:/path/
使用指定SSH密钥

4. 常用选项

选项说明
-a
归档模式(递归+保留权限、时间戳、符号链接、设备文件等)
-v
详细输出
-z
传输时压缩(节省带宽)
-P
显示进度并保留部分传输的文件(等价于--partial --progress)
--delete
删除目标端源端不存在的文件(保持完全同步)
--dry-run
 或 -n
预览操作(不实际执行)
-r
递归同步目录
-u
仅更新(目标文件较旧时才覆盖)
--exclude
排除指定模式的文件/目录
--include
包含指定模式(与--exclude配合)
--max-size
限制同步文件的最大大小
--min-size
限制同步文件的最小大小

5. 排除文件

命令说明
rsync -a --exclude 'node_modules' src/ dest/
排除node_modules目录
rsync -a --exclude '*.log' src/ dest/
排除所有log文件
rsync -a --exclude-from='exclude.txt' src/ dest/
从文件读取排除模式
rsync -a --exclude '*.tmp' --exclude 'cache/' src/ dest/
多个排除模式
rsync -a --include='*.jpg' --exclude='*' src/ dest/
仅同步jpg文件
rsync -a --exclude '/.git' src/ dest/
排除根目录下的.git

exclude.txt 示例:

*.log
*.tmp
node_modules/
.git/
.cache/

6. 权限与所有权

选项说明
-p
保留权限
-o
保留所有者(需要root)
-g
保留组
-t
保留时间戳
-l
保留符号链接
-D
保留设备文件和特殊文件
-A
保留ACL
-X
保留扩展属性
--chmod=Du=rwx,Dgo=rx,Fu=rw,Fgo=r
设置权限(D=目录,F=文件)

7. 带宽限制与性能

选项说明
--bwlimit=5m
限制带宽为5MB/s
--bwlimit=500k
限制带宽为500KB/s
--partial
保留部分传输的文件(便于续传)
--append-verify
验证并追加数据(续传大文件)
--checksum
使用校验和判断文件变化(跳过基于时间和大小的判断)
--whole-file
禁用增量传输(复制整个文件,本地磁盘间更快)
--compress
 / -z
传输时压缩
--compress-level=9
压缩级别(1-9)

8. 进度与输出

选项说明
--progress
显示单个文件进度
--info=progress2
显示整体进度
--stats
显示统计摘要
-v
详细输出
-q
安静模式(不输出)
--log-file=log.txt
将日志写入文件
--out-format="%t %f %b"
自定义输出格式

9. 实用组合模式

命令说明
rsync -av --delete --exclude='*.log' src/ dest/
完全镜像,排除日志文件
rsync -av --bwlimit=10m -e "ssh -p 2222" src/ user@host:/backup/
限速+自定义端口远程备份
rsync -av --partial --append-verify largefile.iso user@host:/path/
断点续传大文件
rsync -av --dry-run --delete src/ dest/
预览将要删除的文件
rsync -av --link-dest=../prev_backup src/ backup-$(date +%Y%m%d)/
创建增量备份(硬链接)
rsync -av -f"+ */" -f"- *" src/ dest/
仅同步目录结构(不含文件)
rsync -av --include='*.txt' --exclude='*' src/ dest/
仅同步txt文件
rsync -av --max-size=10m src/ dest/
仅同步小于10MB的文件

10. 增量备份模式

利用--link-dest实现节省空间的增量备份:

# 首次完整备份
rsync -av --delete /data/ /backup/20250421/

# 增量备份(硬链接未变化的文件)
rsync -av --delete --link-dest=/backup/20250421 /data/ /backup/20250422/

11. 故障排查

问题解决方法
rsync: connection unexpectedly closed
检查SSH连接;验证远程路径权限;增加-vvv调试
rsync: mkdir: Permission denied
目标目录权限不足;使用sudo或调整目录权限
权限保留失败
远程同步需root权限保留所有者:sudo rsync -a -o -g
传输速度慢
使用-z压缩;增加--bwlimit;检查网络延迟
大量小文件传输慢
使用-W禁用增量传输;打包后再传输
符号链接同步问题
使用-l保留链接;-L跟随链接
删除操作意外执行
始终先用--dry-run预览
文件未更新
检查文件时间戳;使用--checksum强制校验

温馨提示: rsync是备份和同步的黄金工具。建议掌握以下最佳实践:1)始终先用--dry-run预览操作,尤其是使用--delete时;2)源路径末尾的/决定是否包含目录本身;3)批量同步大文件时使用-P显示进度和续传;4)远程同步时使用-z压缩节省带宽;5)创建增量备份时结合--link-dest节省空间;6)脚本中使用--log-file记录操作日志。在编写备份脚本时,建议将rsync输出重定向到日志文件,便于事后审计。对于关键的备份任务,可配合--checksum确保数据完整性,尽管这会增加传输时间。

本文PDF格式下载:

  关注公众号(haopython),请回复: LTRSYNC

最新文章

随机文章