使用 cURL 下载文件既简单又直接,并且你可以使用多种配置选项。在下面的指南中,我将向你展示如何使用 cURL 命令行工具下载文件。

当涉及到从客户端向服务器传输数据(或从服务器传输数据)时,cURL 工具非常受欢迎。你可以用它从互联网下载文件。值得注意的是,文件下载系统相当复杂和先进,使你能够比使用常规下载工具实现更多功能。

作为一个 bash shell 脚本编写者,你会发现 cURL 非常适合自动化文件下载。在本文中,我将指导你如何下载文件,以及如何使用所有命令和标志来定制工具以满足你的特定下载需求。


文件下载的基本语法

以下是使用 cURL 下载文件的一些基本语法。在下一节中,你将看到多文件下载、速率限制、使用代理等情况下的更多语法。

curl [URL] — fetch and print to console
curl -O [URL] — download file with its original name
curl [URL] -o [NEWFILENAME] — Download and rename file name.

本指南中使用的文件可在https://filesamples.com/samples/document/txt/sample3.txt上找到。我将从基础开始,以便你从头开始掌握知识。首先,让我们看看如何访问此文件并在控制台上打印其内容。

curl https://filesamples.com/samples/document/txt/sample3.txt

访问此文件

如你所见,“curl URL”命令将在屏幕上打印文件内容。这意味着我们已经能够下载它,只是我们将其打印在屏幕上。

接下来保存,不定义文件的名称。

curl -O https://filesamples.com/samples/document/txt/sample3.txt

上述命令将在你所在的目录中保存名为sample3.txt的文件。大写字母的“-O”指示该工具保存文件而不是将其打印在屏幕上。

这已经很好了。但在大多数情况下,我们宁愿用新名称而不是原始名称来保存文件。下面是更改下载文件文件名的代码——你所要做的就是使用小写字母“-o”标志后跟文件名。o 是 output 的小写形式,你可以使用“—output”代替“-o”。

curl https://filesamples.com/samples/document/txt/sample3.txt —output loremipsu.txt

curl https://filesamples.com/samples/document/txt/sample3.txt -o loremipsu.txt

使用 cURL 下载多个文件

在上面的例子中,你将看到只下载了一个文件。如果你需要下载多个文件,有几种方法可以轻松完成。首先,如果存在可识别的模式,则只需使用一个简短的命令即可,这会使事情变得更容易。如果没有模式,则需要列出完整的 URL。让我们看看它是如何工作的。

下载带有模式的多个文件

在同一页面上,我得到了https://filesamples.com/samples/document/txt/sample3.txt URL,还有另外 2 个https://filesamples.com/samples/document/txt/sample2.txthttps://filesamples.com/samples/document/txt/sample1.txt

如果你查看这 3 个 URL,你会发现它们之间的唯一区别是文件的名称,分别是 sample3.txt、sample2.txt 和 sample1.txt — 并且只有图片不同,其他都相同。让我们看看如何仅使用一个命令来下载这些文件。

curl -O https://filesamples.com/samples/document/txt/sample[1-3].txt

如你所见,[1-3] 告诉 cURL 该 URL 是一个模板,它应该循环遍历 1 – 3 的范围并将其添加到下载文件。请记住,此处的 -O 标志告诉它将文件名与原始文件名一起保存。让我们看看可以完成上述操作的另一种方法。

curl -O https://filesamples.com/samples/document/txt/{sample1.txt, sample2.txt, sample3.txt}

上述命令将实现与第一个命令相同的结果。

不带模式下载多个文件

上面的命令非常简单。但是,如果你必须处理多个 URL 的下载,而这些 URL 没有可以利用的模式来缩短命令,那么你必须列出每个文件的完整 URL,并添加所需的特定输出标签。让我们看看如何下载上面的 3 个 TXT 文件,假设它们没有共同的模式。

curl -O https://filesamples.com/samples/document/txt/sample1.txt -O https://filesamples.com/samples/document/txt/sample2.txt -O https://filesamples.com/samples/document/txt/sample3.txt

遵循 HTTP 重定向

如果你输入正确的 URL 并且不需要重定向,则文件应该会保存。但是,如果有临时或永久重定向,则你将无法获取文件。你将收到一条消息,告知你 URL 已被移动,而不是你要下载的文件的内容。以下是使用其中一个 URL 的响应示例,但将其改为 http:// 而不是 https://。

响应示例

如果你希望 cURL 遵循重定向并在重定向时下载文件,那么你应该添加“-L”标志,如下所示

curl -O http://filesamples.com/samples/document/txt/sample1.txt -L

通过上述操作,该工具将按照重定向并成功为你下载所需的文件。


阻止进度报告(静默模式)

默认情况下,当你运行上述任何命令时,你将看到如下所示的进度报告。

预防进度报告

在这里,你可以看到下载速度和所用时间等。这不是 UNIX 的做事方式,因为在大多数情况下,除非必要,工具应该尽可能保持安静。如果你不想将其发送到标准输出(在本例中为控制台),你可以按如下方式创建“-S”或“—silent”命令。

curl -O http://filesamples.com/samples/document/txt/sample1.txt -s

通过上述操作,控制台上将不会打印任何内容。


通过代理下载文件

有时,你可能想不使用真实 IP 地址来下载文件。在这种情况下,代理是你的最佳选择。有趣的是,使用 -x 标志在 cURL 中配置代理非常简单。让我们看看如何使用 cURL 通过代理访问 Web 资源。基本语法如下。

curl  -x http://[HOST]:[PORT] -O [URL]

让我们使用第一个例子。

curl -x http://127.84.112.43:555 -O https://filesamples.com/samples/document/txt/sample3.txt

以上是基本语法。如上所示,仅包含代理主机和端口。这仅适用于免费代理或使用 IP 白名单进行身份验证的代理。如果你的代理需要用户名和密码身份验证,请使用以下代码语法。

curl  -x http://username:password@[HOST]:[PORT] -O [URL]

下面是一个例子

curl -x http://sharpman: [email protected] :555 -O https://filesamples.com/samples/document/txt/sample3.txt

速率限制

cURL 将以最快的速度访问目标服务器的资源,有时,这可能会使服务器不堪重负,导致阻塞。如果你需要为此限制速度,或者想要模拟较慢的网络,则可以使用 —limit-rate 标志以千字节、兆字节和千兆字节为单位定义限制。以下是如何将下载限制保持在 500KB 的示例。

curl —limit-rate 500KB -O https://filesamples.com/samples/document/txt/sample3.txt

查看下载进度

默认下载报告只会告诉你下载速度、文件大小和所用时间。我已经讨论过如何禁用它。如果你正在处理大文件,这将毫无用处。更有帮助的是进度指示器,它会告诉你完成下载的百分比。你可以使用 -# 标志,如下所示。

curl -# -O https://filesamples.com/samples/document/txt/sample3.txt

上面的文件相当小。如果你使用较大的文件,你将看到下载进度,如下所示。

#### 10.86%

使用 cURL 配置文件

上述命令都有效。但是,还有另一种方法可以简化文件下载。即创建一个配置文件并将所有常用确认信息存储在其中。这样,你不必在每次需要发送下载请求时都编写繁琐的命令。例如,你不必在每个下载请求中定义速率限制、超时期限、代理设置和遵循重定向,而是可以将其保存为配置并默认使用它们。

为此,创建一个文本文件并保存以下代码

curl_timeout = 10

curl_limit_rate = 500000

curl_follow_location = true

proxy = https://yourproxy.com:3128

# Username and password for proxy authentication

proxy_user = username

proxy_password = password

将其保存为主目录中的 .curlrc。要使用它,你只需发送一个简单的请求,如下所示。

curl https://filesamples.com/samples/document/txt/sample3.txt -O

cURL 将查看主目录中的配置文件并获取这些配置以供默认使用。这是使用 cURL 的一种更简洁的方式,即始终指定每个标志。


结论

从上面可以看出,cURL 是一个很好的下载器,并且通过一些调整,你应该能够编写一个强大的 shell 脚本或其他类型的脚本,以你想要的方式自动下载文件。

从使用代理到设置速率限制、请求超时和报告下载进度,cURL 工具与常规下载工具一样强大。你最好查看 cURL 文档,以充分了解该工具在下载资源方面的真正功能。

这篇文章有用吗?

点击星号为它评分!

平均评分 / 5. 投票数:

到目前为止还没有投票!成为第一位评论此文章。

No more articles