rsync入门笔记
高级程序员确实更依赖终端,但并不是因为“只用终端才显得高级”,而是因为:
- 效率更高:终端命令可以组合/脚本化,避免重复点击。
- 可自动化:能集成到CI/CD、定时任务等系统中。
- 跨平台通用:无论用Mac/Linux/服务器,命令基本一致。
- 资源占用低:尤其远程操作时,比图形工具更稳定快速。
不过,工具只是手段,解决问题才是目的。根据场景灵活选择(比如紧急调试时我也会用SFTP工具快速拖文件)。以下是为你定制的rsync
极简教学👇
🚀 rsync 终极入门指南
▎0. 快速认知rsync
- 它是什么?
一个增量同步工具,只传输变化的文件部分(类似智能版scp
)。 - 核心优势:
✅ 增量备份 | ✅ 断点续传 | ✅ 保留文件属性 | ✅ 支持排除文件
▎1. 基础命令模板
🔹 本地 → 远程服务器
rsync -avz -e "ssh -p 端口" 本地路径/ 用户名@IP:远程路径/
🔹 远程 → 本地
rsync -avz -e "ssh -p 端口" 用户名@IP:远程路径/ 本地路径/
🔹 本地文件夹同步
rsync -av 源目录/ 目标目录/
▎2. 参数解析(新手先记这4个)
参数 | 作用 | 示例 |
---|---|---|
-a | 归档模式(保留权限等) | -a |
-v | 显示同步详情 | -v |
-z | 压缩传输(省带宽) | -z |
-e | 指定SSH端口 | -e "ssh -p 2222" |
▎3. 高频场景示例
📌 场景1:同步代码到服务器(排除node_modules
)
rsync -avz --exclude="node_modules/" -e "ssh -p 2222" ~/code/ user@1.2.3.4:/home/user/code/
📌 场景2:下载服务器日志(只拉新增内容)
rsync -avz -e "ssh -p 2222" user@1.2.3.4:/var/log/nginx/ ~/logs/
📌 场景3: ⚠️ 危险操作!双向同步(删除目标端多余文件)
rsync -av --delete 源目录/ 目标目录/
❗ 先用--dry-run
测试!
rsync -av --delete --dry-run 源目录/ 目标目录/ # 模拟运行
▎4. 进阶技巧
🔸 限速传输(避免挤占带宽)
rsync -avz --bwlimit=1000 # 限速1000KB/s
🔸 断点续传(中断后重新运行即可)
rsync -avz --partial # 保留部分传输的文件
🔸 后台运行(适合大文件)
nohup rsync -avz bigfile user@IP:/path/ > sync.log 2>&1 &
- 日志会保存到
sync.log
- 用
tail -f sync.log
实时查看进度
▎5. 常见问题
❌ 报错:Permission denied
rsync -avz -e "ssh -p 2222" --rsync-path="sudo rsync" # 用sudo权限同步
❌ 中文文件名乱码
rsync -avz --iconv=utf8,gbk # 转换编码(视情况调整)
🎯 终极心法
- 首次操作必加
-v
:看清楚同步了哪些文件! - 危险操作前加
--dry-run
:防止误删文件。 - 网络差时用
-z + --bwlimit
:压缩+限速更稳定。
💡 现在试试看:用rsync
备份你的桌面文件到~/backup/
吧!
rsync -av ~/Desktop/ ~/backup/
遇到具体问题随时问我,可以帮你定制命令 😊