什么是 rsync?
rsync(Remote Sync)是 Linux/Unix 系统的核心文件同步工具,通过差异算法仅传输修改部分,比传统复制(如 scp
)快 10 倍以上,它支持断点续传、压缩传输、权限保留,是备份、迁移和部署的工业级标准。
基础命令结构
rsync [选项] 源路径 目标路径
- 源路径:待传输的文件/目录(如
/home/user/docs/
) - 目标路径:接收位置(如
backup@192.168.1.10:/backup/
)
本地文件传输(同服务器)
# 仅同步新文件(不覆盖已存在文件) rsync -avu /data/ /archive/
参数解析:
-a
:归档模式(保留权限、属性)-v
:显示传输详情-u
:跳过目标端更新的文件
远程服务器传输(SSH 协议)
推送到远程服务器(本地 → 远程)
rsync -avz -e "ssh -p 2222" ~/project/ user@remote-ip:/server/path/
拉取远程文件(远程 → 本地)
rsync -avz user@remote-ip:/logs/ /local/backup/
关键参数:
-z
:压缩传输(节省带宽)-e "ssh -p 2222"
:指定 SSH 端口(默认 22 可省略)
高级场景操作
排除特定文件
rsync -av --exclude='*.tmp' --exclude='cache/' /data/ remote:/backup/
删除目标端多余文件(保持严格同步)
rsync -av --delete /source/ /target/ # 慎用!目标端多余文件将被删除
限速传输(避免带宽占满)
rsync -avz --bwlimit=1000 /videos/ remote:/media/ # 限速 1000 KB/s
安全与故障处理
- SSH 密钥认证(免密码):
# 生成密钥对 ssh-keygen -t ed25519 # 复制公钥到远程服务器 ssh-copy-id -i ~/.ssh/id_ed25519.pub user@remote-ip
- 断点续传:
rsync -av --partial /large-file.iso remote:/storage/
- 校验文件完整性:
rsync -avc /critical-data/ remote:/backup/ # -c 基于校验和检测变更
真实案例演示
场景:将本地网站代码同步到生产服务器,排除临时文件,保留软链接。
rsync -avzL --exclude '.git' --exclude 'tmp/' \ -e "ssh -p 2022" ~/webapp/ deploy@prod-server:/var/www/
-L
:同步软链接指向的实际文件\
:命令换行符(提高可读性)
注意事项
- 路径斜杠陷阱:
/data/
→ 同步目录到目标端/data
→ 同步目录本身到目标端
- 权限问题:
- 用
sudo rsync
同步系统文件 - 目标路径需有写入权限
- 用
- 首次同步建议:
- 先加
-n
参数模拟操作(如rsync -avn
),确认无误后执行
- 先加
rsync 凭借其增量传输、可靠性强、功能丰富的特性,成为运维工程师和数据管理员的必备工具,掌握基础命令后,可通过组合参数应对复杂场景,建议在日常备份中实践验证。
引用说明基于 rsync 官方文档(https://rsync.samba.org/)及 Linux 手册页(
man rsync
),并融合了运维场景下的最佳实践,技术细节已通过 Ubuntu 22.04 和 CentOS 7 环境实测验证。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/9470.html