0%

超多协议传输的 - curl

超多协议传输的 - curl

.. note::

锦瑟无端五十弦,一弦一柱思华年。
李商隐《锦瑟》

Linux curl命令是一款用于从一个server端传输的工具。

很强力,支持众多协议,比如:DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMB, SMBS, SMTP,SMTPS, TELNET 和 TFTP.

说实话,有些协议我也不知道,不过我们只需要知道这个命令设计之初是希望不需要用户的交互和介入,就可以完成数据的传输。

所以这个命令被广泛应用于数据传输、测试、调试和自动化脚本中。

官方定义为:

curl - transfer a URL

语法

1
$ curl [options / URLs]

参数

  • -O : 把输出写到该文件中,保留远程文件的文件名
  • -u : 通过服务端配置的用户名和密码授权访问

默认传输下载文件

默认情况下,将下载的数据写入到文件,并且使用服务器上的名字,这里以下载Linux的内核代码为例。

1
2
3
4
$ curl https://mirrors.edge.kernel.org/pub/linux/kernel/v2.4/linux-2.4.32.tar.gz -O
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
1 36.7M 1 575k 0 0 17431 0 0:36:50 0:00:33 0:36:17 27222

需要授权的网站

部分网站可能需要访问的授权,此时可以使用-u选项提供用户名和密码进行授权:

1
2
$ curl -u username https://www.website.com/
Enter host password for user 'username':

批量下载

当然,这么强力的工具,肯定是支持批量下载的,并且是正则表达式的支持。

比如:ftp://ftp.example.com/的file1,file5和file7,方法如下:

1
$ curl ftp://ftp.example.com/file{1,5,7}.txt

如果下载ftp://ftp.example.com/的从file1到file100的100组文件,方法如下:

1
$ curl ftp://ftp.example.com/file[1-100].txt
处无为之事,行不言之教;作而弗始,生而弗有,为而弗恃,功成不居!

欢迎关注我的其它发布渠道