阿里巴巴云原生 · 2020年08月27日

科普|不同协议下远程服务器文件上传_下载优劣对比

头图.png

作为一个程序员,如果不知道如何进行远程服务器的文件上传与下载,实在是一件尴尬的事情。打开百度,搜索「远程服务器 上传下载」,你能得到 63,100,000 个搜搜结果,五花八门的操作方式的让人眼花缭乱。

那么,今天我们聊聊如何实现远程服务器的文件上传与下载。通常而言,我们会选择 ftp、scp 以及 sftp 进行文件传输。但 ftp 基于 TCP 来传输文件,明文传输用户信息和数据,存在一定的安全风险。所以我们更倾向于选择基于 SSH 来加密传输的 scp 和 sftp,但结合速度、安全性和功能的要求,这两种协议各有优劣。接下来,我们做个简单比较,也许会让你的日常选择更加高效。

什么是 scp?

scp 是一种基于 SSH 的协议,主要用在网络上的主机之间提供文件传输。使用 scp,我们可以在主机之间快速传输文件以及基本文件属性,例如访问权限和通过 FTP 无法可用的时间戳。scp 协议使用 RCP 传输文件和 SSH 以提供身份验证和加密。

如何通过 scp 进行文件上传与下载?

先介绍我们最常见的,在 linux 中可以使用 scp 进行文件上传和下载。

  • 文件上传:scp localfile user@host:/dirpath

即 SCP 文件路径远程主机用户名@ip:/存放文件的路径,比如 scp hello.txt user@ip:/home/user/dirpath

  • 从本地上传目录到远程主机 : scp -r localdir user@host:/dirpath

即 scp -r 本地目录路径远程主机用户名@ip:/存放文件路径

  • 从远程主机下载东西到本地电脑拷贝文件命令 scp user@host:/path/file /localpath

即 scp用户名@IP:/文件路径 /本地文件路径

  • 如果拷目录就 scp -r user@host:/dirpath /localpath

即 scp -r 用户名@IP:/目录路径 /本地文件路径

什么是 sftp?

sftp 同样是基于 SSH 的文件传输协议,但功能更强大。相较于 scp,更像是远程文件管理协议,sftp 允许对远程文件(查看目录,删除文件和目录等)进行一系列操作。

如何通过 sftp 进行文件上传与下载

而 sftp 下,我们可以通过 linux 命令行,使用 SFTP 命令进行直接操作:

  • sftp 用户名@ip;
  • 回车提示输入密码,进入提示符 sftp>;
  • 在 sftp 中 get 表示下载,put 表示上传;
  • sftp> get 远程主机下文件的路径、将文件保存到本地电脑的路径;
  • sftp> put 本地文件的路径、将文件版保存到远程主机的路径;
  • pwd 命令可以帮您查询远程主机的当前路径。查询本机当前工作目录 lpwd.,改变路径可以用 cd ,改变本机路径可以用 lcd;ls rm rmdir mkdir 这些命令都可以使用。同理调用本机都是加 l , 即 lls lrm。

到底什么时候应该使用 scp 或 sftp?

  • 速度:在传输文件时,scp 通常比 sftp 快得多,尤其是在网络延迟很高的情况下。这是因为 scp 实现了更高效的传输算法,不需要等待数据包确认, 那么,我们就选择 scp;
  • 安全性:由于两种协议都都基于 SSH,因此它们都提供相同的安全功能,包括密码和数据加密以及公钥验证,那么,scp 或 sftp 皆可;
  • 功能/可用性:如果我们需要使用包括查看/搜索目录,创建文件夹和组织文件,删除或重命名文件等功能,那么,sftp 是最好的选择;
  • 传输文件大小:scp 和 sftp 都没有文件大小限制。但根据传输文件大小,scp 可能略有优势。

我们要做什么?

但不管是 scp 还是 sftp,我们都需要输入相关指令行。一顿操作猛如虎,其实只为了完成简单的文件上传与下载。当然,除去常见的 CLI 指令行的形式,我们可以通过现在比较受欢迎的终端模拟器软件 xshell 和 securecrt 实现相关功能。xshell 和 securecrt 作为常用的串口终端工具,通过可视化形式可以满足相关需求并具备着丰富的延展功能。但经过用户调研,我们发现开发者其实有时只是希望实现上传以及下载功能。与此同时,功能能够与开发环境集成,这样子在 IDE 里面就可以写代码和文件上下传都可以无缝进行了。

那么,现在有了更简单的远程服务器文件上传与下载方式。借助 IDE 内的远程服务器文件浏览器,我们可以更加便捷的形式实现上传、下载文件。而这一切,我们仅需要 Cloud Toolkit 即可,只需三步即可,就像把大象关进冰箱一样简单。

  • 在 IntelliJ IDEA 菜单栏选择 Tools > Alibaba Cloud > Alibaba Cloud View > Host
  • 在 Host 列表右侧 Action 选择 More > Remote Files
  • 可根据需求选择刷新、上传和下载远程服务器上的文件

1.png

此外,还可以借助 Cloud Toolkit 将本地应用快速部署到阿里云 ECS、EDAS、容器服务 Kubernetes 版和任意服务器中去,还可以使用 Arthas 诊断、文件或文件夹上传、内置 Terminal 等诸多功能。

如何安装 Cloud Toolkit

Cloud Toolkit 提供 IntelliJ IDEA、Eclipse、VS Code、PyCharm 多个版本供开发者使用。这里,我们以 IntelliJ IDEA 举例。我们可以直接在 JetBrains 插件市场搜索 Alibaba Cloud Toolkit 并下载安装。

  1. 在 IntelliJ IDEA 顶部菜单栏中选择 File > Settings
  2. 在 Settings 对话框的左侧导航栏中单击 Plugins
  3. 在 Plugins 区域单击 Marketplace
  4. 在搜索栏中输入 Alibaba Cloud Toolkit
  5. Search Results 区域会出现 Alibaba Cloud Toolkit,单击 Install

2.png

  1. 等待下载、安装完成后,单击 Restart IDE
  2. IntelliJ IDEA 重启后,在菜单栏中选择 File > Settings,在 Settings 对话框左侧的导航栏中可以看到 Alibaba Cloud Toolkit,则说明安装成功

是不是很简单,那就快来下载 Cloud Toolkit!

关于 Cloud Toolkit

Alibaba Cloud Toolkit(后文简称 Cloud Toolkit)可以帮助开发者更高效地部署、测试、开发和诊断应用。Cloud Toolkit 与主流 IDE 及阿里云其他产品无缝集成,帮助您大大简化应用部署到服务器,尤其是阿里云服务器中的操作。您还可以通过其内嵌的Arthas程序诊断、Terminal Shell 终端和 MySQL 执行器等工具,简化应用开发、测试和诊断的过程。目前有超过 10w 开发者选择使用 Cloud Toolkit 提升日常研发效率。

点击链接立即体验 Cloud Toolkit:https://www.aliyun.com/product/cloudtoolkit

阿里巴巴云原生关注微服务、Serverless、容器、Service Mesh 等技术领域、聚焦云原生流行技术趋势、云原生大规模的落地实践,做最懂云原生开发者的公众号。”
推荐阅读
关注数
7235
内容数
238
阿里巴巴云原生公众号(ID:Alicloudnative)发布云原生技术最新资讯、汇集云原生技术最全内容,定期举办云原生活动、直播,阿里产品及用户最佳实践发布。与你并肩探索云原生技术点滴,分享你需要的云原生内容。
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息