rsync 命令 #
rsync(remote sync)是一个功能强大的文件同步工具,用于在本地和远程系统之间高效地复制和同步文件。它通过仅传输文件的变化部分来节省带宽和时间,是备份、镜像和文件分发的理想选择。
基本语法 #
bash
rsync [选项] 源路径 目标路径
本地同步 #
bash
rsync [选项] /本地/源/路径 /本地/目标/路径
远程同步(使用SSH) #
bash
# 从本地同步到远程
rsync [选项] /本地/源/路径 用户@远程服务器:/远程/目标/路径
# 从远程同步到本地
rsync [选项] 用户@远程服务器:/远程/源/路径 /本地/目标/路径
常用选项 #
基本选项 #
-v:详细输出模式-q:安静模式,只显示错误信息-a:归档模式,递归同步并保留文件属性(权限、时间戳等)-r:递归同步目录-l:保留符号链接-p:保留文件权限-t:保留文件时间戳-g:保留文件所属组-o:保留文件所有者-D:保留设备文件和特殊文件
传输选项 #
-z:压缩传输数据-P:显示进度条并保留部分传输的文件--progress:显示传输进度--partial:保留部分传输的文件--bwlimit=KBPS:限制带宽(KB/秒)-e:指定远程shell程序(如SSH)
同步策略选项 #
-u:仅更新目标中不存在或较旧的文件--delete:删除目标中存在但源中不存在的文件--exclude=PATTERN:排除匹配模式的文件或目录--include=PATTERN:包含匹配模式的文件或目录--filter=RULE:使用规则文件进行复杂的包含/排除
安全选项 #
-i:显示文件传输的详细列表--dry-run:模拟同步操作,不实际执行--checksum:基于文件内容而非时间戳和大小来决定是否同步
示例用法 #
1. 本地目录同步 #
bash
# 基本同步
rsync -av /home/user/documents/ /backup/documents/
# 同步并显示进度
rsync -avP /home/user/documents/ /backup/documents/
2. 远程同步到本地 #
bash
# 从远程服务器下载文档到本地
rsync -avP user@example.com:/home/user/documents/ /local/documents/
3. 本地同步到远程 #
bash
# 上传本地照片到远程服务器
rsync -avP /local/photos/ user@example.com:/remote/photos/
4. 使用SSH端口和密钥 #
bash
# 使用特定SSH端口
rsync -avP -e "ssh -p 2222" /local/data/ user@example.com:/remote/data/
# 使用SSH密钥文件
rsync -avP -e "ssh -i ~/.ssh/mykey" /local/data/ user@example.com:/remote/data/
5. 增量备份与删除 #
bash
# 同步并删除目标中不存在的文件(镜像模式)
rsync -av --delete /local/source/ /local/backup/
# 仅同步较新的文件
rsync -avu /local/source/ /local/backup/
6. 排除文件和目录 #
bash
# 排除特定文件类型
rsync -av --exclude="*.tmp" /local/source/ /local/backup/
# 排除多个文件和目录
rsync -av --exclude="*.tmp" --exclude="/logs/" --exclude="/tmp/" /local/source/ /local/backup/
# 使用排除文件
rsync -av --exclude-from="exclude.txt" /local/source/ /local/backup/
7. 压缩传输 #
bash
# 在低带宽连接上使用压缩
rsync -avz /local/source/ user@example.com:/remote/destination/
高级技巧 #
1. 备份整个系统 #
bash
# 备份根目录(排除不需要的目录)
rsync -aAXv --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} / /backup/
2. 实时同步 #
bash
# 使用watch命令实现准实时同步
watch -n 60 rsync -av --delete /local/source/ /local/backup/
3. 同步大文件 #
bash
# 使用--partial选项确保大文件传输中断后可以继续
rsync -avP --partial /local/largefile.iso user@example.com:/remote/
4. 检查同步差异 #
bash
# 模拟同步并显示将执行的操作
rsync -av --delete --dry-run /local/source/ /local/backup/
常见问题与解决方案 #
1. 权限错误 #
问题:同步时遇到权限被拒绝的错误 解决方案:确保源文件有读取权限,目标路径有写入权限,或使用sudo提升权限
2. SSH连接问题 #
问题:无法建立SSH连接 解决方案:检查SSH服务是否运行,端口是否正确,密钥或密码是否有效
3. 符号链接问题 #
问题:符号链接没有正确同步 解决方案:使用-l选项保留符号链接,或使用-L选项将符号链接解析为实际文件
4. 大文件传输中断 #
问题:大文件传输经常中断 解决方案:使用–partial选项和-P选项,结合–bwlimit限制带宽
性能优化 #
- 使用增量传输:rsync默认只传输文件的变化部分,无需额外选项
- 禁用压缩:对于已压缩的文件(如zip、jpg),使用–no-compress选项
- 增加SSH缓冲区:使用
-e "ssh -o Compression=no -o TCPKeepAlive=yes" - 使用快速校验:对于大文件,使用–checksum选项可能更慢,建议仅在必要时使用
rsync是一个功能丰富的工具,本文仅介绍了最常用的功能和选项。要了解完整的选项列表,请运行man rsync查看详细手册。
最后更新:2026-02-07