🔹 FTP 工具 vs. 命令行 SCP/RSYNC 对比
场景 | FTP/SFTP 工具(如 Cyberduck、FileZilla) | 命令行(scp /rsync ) |
---|---|---|
适用人群 | 新手、喜欢图形化操作 | 习惯命令行、需要自动化脚本 |
传输少量文件 | ✅ 拖拽即可上传下载 | ⚠️ 需手动输入命令 |
传输大量文件 | ✅ 更直观,可队列管理 | ✅ rsync 更高效(增量同步、断点续传) |
服务器文件管理 | ✅ 直接可视化浏览/编辑/删除 | ⚠️ 需记忆 ls /cd /rm 等命令 |
安全性 | ⚠️ FTP 不安全(明文传输),务必用 SFTP | ✅ SCP/SFTP 基于 SSH,默认加密 |
脚本化/自动化 | ❌ 难集成到脚本 | ✅ 可写脚本批量操作(如定时备份) |
🔹 推荐工具(Mac 可用)
1. SFTP 工具(安全推荐!)
- Cyberduck(免费,界面简洁,支持 SFTP/FTP/云存储)
是的!rsync
是比普通 FTP/SCP 更高效的文件同步工具,特别适合大文件、频繁更新或网络不稳定的场景。以下是它的核心优势和使用方法:
🔹 为什么 rsync
更高效?
特性 | 说明 |
---|---|
增量同步 | 只传输变化的部分(对比文件差异),大幅节省时间和带宽。 |
断点续传 | 如果传输中断,下次可从中断处继续,无需重新开始。 |
保持权限/时间戳 | 保留文件属性(如权限、修改时间),适合备份。 |
压缩传输 | 通过 -z 选项压缩数据,减少传输量(尤其对文本文件有效)。 |
支持排除文件 | 可忽略指定文件(如临时文件、日志)。 |
🔹 基础命令语法
1. 本地 → 服务器
rsync -avz -e "ssh -p 端口号" 本地目录/ 用户名@服务器IP:目标路径/
2. 服务器 → 本地
rsync -avz -e "ssh -p 端口号" 用户名@服务器IP:服务器目录/ 本地路径/
3. 常用选项
选项 | 作用 |
---|---|
-a |
归档模式(保留权限、时间戳等) |
-v |
显示详细进度 |
-z |
压缩传输 |
--delete |
同步时删除目标端多余文件(谨慎使用!) |
--exclude="*.log" |
排除所有 .log 文件 |
🔹 典型使用场景
✅ 场景 1:同步本地项目到服务器(排除 node_modules
)
rsync -avz -e "ssh -p 2222" --exclude="node_modules/" ~/projects/my_app/ user@server:/var/www/
✅ 场景 2:从服务器拉取日志(仅同步新增内容)
rsync -avz -e "ssh -p 2222" user@server:/var/log/nginx/ ~/Desktop/nginx_logs/
✅ 场景 3:双向同步(确保两端完全一致)
rsync -avz --delete -e "ssh -p 2222" ~/backup/ user@server:/backup/
⚠️ --delete
会删除目标端多余文件,首次使用建议先加 --dry-run
模拟运行。
🔹 高级技巧
1. 限速传输(避免占用全部带宽)
rsync -avz --bwlimit=1000 -e "ssh -p 2222" large_file user@server:/data/
(--bwlimit=1000
表示限速 1000 KB/s)
2. 断点续传
如果传输中断,直接重新运行原命令即可,rsync
会自动跳过已传输的部分。
3. 后台运行(长时间任务)
nohup rsync -avz -e "ssh -p 2222" big_folder user@server:/backup/ > rsync.log 2>&1 &
- 日志会保存到
rsync.log
,即使关闭终端也不会中断。
🔹 与 scp
/sftp
对比
工具 | 适用场景 | 优势 |
---|---|---|
rsync |
大文件、定期备份、增量同步 | 高效、节省带宽、断点续传 |
scp |
快速传单个小文件 | 命令简单 |
SFTP 图形工具 | 可视化操作、临时文件管理 | 拖拽上传、直观浏览 |
📌 总结
- 日常小文件传输 → 用 SFTP 工具(如 Cyberduck)更方便。
- 大文件/定期同步 →
rsync
是首选(尤其适合备份、部署代码)。 - 极端网络环境 →
rsync + --bwlimit + nohup
组合抗干扰。
掌握 rsync
后,你会发现它比传统 FTP/SCP 强大得多!遇到具体场景可以再问我优化方案 😊