如何使用 wget 和 curl 下载文件

举报
Tiamo_T 发表于 2022/07/04 15:47:26 2022/07/04
【摘要】 通常使用 wget 来下载文件。在某些系统上,没有安装 wget,只有 curl 可用。能用一个简单的例子来解释我如何使用 curl 下载远程文件吗?curl和wget之间有什么区别吗?

通常使用 wget 来下载文件。在某些系统上,没有安装 wget,只有 curl 可用。能用一个简单的例子来解释我如何使用 curl 下载远程文件吗?curl和wget之间有什么区别吗?

在高层次上,wget 和 curl 都是执行相同操作的命令行实用程序。

  • 它们都可用于使用 FTP 和 HTTP(s) 下载文件。
  • 您还可以使用 curl 和 wget 发送 HTTP POST 请求
  • 但是 curl 提供了可供程序员在自己的代码中使用的 API。curl 使用 libcurl,它是一个跨平台库。
  • wget 只是一个没有任何 API 的命令行工具。
  • Curl 还支持更多 wget 不支持的协议。例如:SCP、SFTP、TFTP、TELNET、LDAP(S)、文件、POP3、IMAP、SMTP、RTMP 和 RTSP。
  • 使用 wget 有一个主要优点。wget 支持递归下载,而 curl 不支持。

wget 示例

以下示例下载文件并以与远程服务器相同的名称存储。

wget http://www.openss7.org/repos/tarballs/strx25-0.9.2.1.tar.bz2

以下示例下载文件并以与远程服务器不同的名称存储。当远程 URL 不包含 url 中的文件名时,这很有用,如下例所示。

wget -O taglist.zip http://www.vim.org/scripts/download_script.php?src_id=7701

卷曲示例

$ curl -O http://www.openss7.org/repos/tarballs/strx25-0.9.2.1.tar.bz2
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
 28 3762k   28 1085k    0     0  72771      0  0:00:52  0:00:15  0:00:37 54267

选项 -O(大写 O)很重要。没有这个,curl 将开始将下载的文件转储到标准输出上。使用 -O,它会下载与远程服务器同名的文件。在上面的例子中,我们正在下载 strx25-0.9.2.1.tar.bz2,所以下载的文件也将是同名的。

除了 -O,您还可以指定“--remote-name”,如下所示。两者都是一样的。


$ curl --remote-name http://www.openss7.org/repos/tarballs/strx25-0.9.2.1.tar.bz2

在 curl 下载时,它会提供以下有用信息:

  • % – 截至目前已完成下载的总百分比。当它达到 100% 时,下载完成。在上面的例子中,它只下载了 28% 的文件。
  • Total – 文件的总大小
  • Received - 到目前为止已下载的文件的总大小。在上面的例子中,到目前为止它已经下载了 1085k(总共 3762k)
  • Xferd – 这将在您将一些文件上传到远程服务器时使用。在上传期间,这将指示到目前为止已上传的文件的总大小。因为我们正在下载一个文件,在这个例子中,这是 0。
  • Average Speed Dload – 这表示平均下载速度。
  • AVerage Speed Upload  – 上传文件时,这将指示平均上传速度
  • Time Total – 这表示根据当前下载(或上传)速度下载(或上传)整个文件所需的总时间。在此示例中,下载此文件总共需要大约 52 秒。
  • Time Spend – curl 到目前为止下载(或上传)文件所花费的时间。在这个例子中,到目前为止它已经花费了 15 秒。
  • Time Left –这是根据“总时间”——“所用时间”计算得出的。
  • Current Speed – - 这表示当前的下载/上传速度。将此与平均加速 Dload/UPload 进行比较,以查看您的系统当前下载的速度有多快或多慢。

如果要下载文件并将其存储在与远程服务器中文件名不同的名称中,请使用 -o(小写 o),如下所示。当远程 URL 不包含 url 中的文件名时,这很有用,如下例所示。

$  curl -o taglist.zip http://www.vim.org/scripts/download_script.php?src_id=7701
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 50243  100 50243    0     0   170k      0 --:--:-- --:--:-- --:--:--  400k

在上面的例子中,远程 URL 中没有文件名,它只是调用了一个 php 脚本,将一些参数传递给它。但是,该文件将被下载并保存为本地系统上的 taglist.zip。代替 -o,您还可以指定“–output”。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。