本文聚焦于两个问题: 1、为什么要用命令行方式下载文件? 2、常见的命令行下载文件的方式有哪些?
首先,作为一个软件开发人员,熟悉使用命令行方式来下载文件是很有必要的。因为很难避免的遇到跨操作系统的任务,比如:从linux服务器下载个日志,从windows上传个软件安装包到linux服务器...等等。市面上也有着很多的文件操作的软件,开源的和收费的都有,这些软件大大降低了跨操作系统操作文件的难度。但在无形中也会多了层依赖和障碍,必须的装个额外的软件,而且还得是可视化界面。而使用命令行就没有那么多困扰,各种PC操作系统都支持命令行,直接输入几行命令就可以完成操作,而且还可以写成执行脚本,以及批量操作,就特别适合喜欢专研技术的开发人员。那么就先了解两款常见的下载文件的命令行工具吧
curl
适用场景:目标源能接受http
请求。
比如:
# 下载一个 OpenJDK11 的稳定版本
curl -o openjdk11_ga.zip https://download.java.net/java/ga/jdk11/openjdk-11_windows-x64_bin.zip
常用参数:
-X
指定请求方式-H
指定请求头-d
指定请求体-o
指定存储文件路径和文件名
be like:
curl -X POST https://example.com \
-o d:/download/test.zip \
-H "content-type:application/json" \
-H "Authorization:xxxxxxxxxxxxxxxxxxxxxx" \
-d "{'hello': 'world'}"
scp
适用场景:目标源能接受ssh
协议。下载 & 上传文件。比如:
# 从远端(比如linux操作系统)拷贝一个文件到本地
scp userName@192.168.1.2:~/logs/error.log d:/temp/error.log
# 从本地拷贝一个文件到远程(比如linux操作系统)
scp d:/software_box/openjdk11.zip userName@192.168.1.2:~/software_box/openjdk11.zip
由上面的demo,不难看出两点:
from
和to
,第一组路径就是from
,而第二组就是to
,表示从哪里拷贝到哪里。- 路径的组成除了文件路径外,还可包含
用户名
和主机IP
表示的远端信息
(比如:userName@192.168.1.2),用:
分割。
scp是基于ssh
协议的,所以在连接远端时,需要用到ssh
连接时的参数:
-i
指定ssl连接密钥文件-p
指定ssl连接端口
be like:
scp -i c:/key/mykey -p 222 userName@192.168.1.2:~/logs/error.log d:/temp/error.log
注意:本文归作者所有,未经作者允许,不得转载