当前位置: 首页 > web >正文

FTP 工具 vs. 命令行 SCP/RSYNC


🔹 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 强大得多!遇到具体场景可以再问我优化方案 😊

http://www.xdnf.cn/news/6515.html

相关文章:

  • (十九)Java集合框架深度解析:从基础到高级应用
  • Linux 内核核心知识热点题分析:10 个连环打通的难点
  • Modern C++(一)基本概念
  • 养生:健康生活的极简攻略
  • free void* 指令
  • list简单模拟实现
  • miniconda
  • 智能手表集成测试报告(Integration Test Report)
  • 磁盘性能测试与分析:结合fio和iostat的完整方案
  • muduo库中Channel模块的深度解析
  • LeetCode 3337.字符串转换后的长度 II:矩阵快速幂(也没有想象中的那么高级啦)
  • 小白上手RPM包制作
  • InforSuite RDS 与django结合
  • 21、工业大数据分析与实时告警 (模拟根因分析) - /数据与物联网组件/bigdata-root-cause-analysis
  • 创建你的第一个MCP服务
  • 【ROS2】ROS节点启动崩溃:rclcpp::exceptions::RCLInvalidArgument
  • Redis 大 key 问题解决方案
  • Windows软件插件-音视频捕获
  • 配置别名路径 @
  • 【落羽的落羽 C++】进一步认识模板
  • SpringBoot应用启动过程
  • 如何通过高防CDN让CC攻击有来无回?
  • 数学复习笔记 10
  • 鸿蒙OSUniApp 开发的文件上传与下载功能#三方框架 #Uniapp
  • CAPL编程系列_04
  • std::vector c++
  • LeetCode 热题 100 1.两数之和
  • 竞品分析是什么,包括哪些内容?AI竞品分析生成器推荐!
  • 20250515让飞凌的OK3588-C的核心板在Linux R4下适配以太网RTL8211F-CG为4线百兆时的接线图
  • VMware中快速安装与优化Ubuntu全攻略