Linux命令行下载工具

1. curl

1.1. 介绍

curl是一个功能强大的命令行工具,用于在各种网络协议下传输数据。它支持多种协议,包括但不限于 HTTP、HTTPS、FTP、FTPS、SCP、SFTP、SMTP、POP3、IMAP 等,这使得它在网络数据交互场景中有广泛的应用。curl可以模拟浏览器或其他网络客户端的行为,从服务器获取数据或者向服务器发送数据。例如,你可以用它来下载文件、获取网页内容、检查网络连接等多种操作。

1.2. 语法

curl [options] [URL...]

其中,options是各种控制选项,URL...是一个或多个目标资源的网络地址。

1.3. 常用选项

1.3.1. 保存资源

  • -o :用于将获取的内容保存到指定的本地文件中,并且可以自定义文件名。例如,curl -o output.html http://example.com/index.html会把http://example.com/index.html这个网页的内容保存为本地的output.html文件。如果不使用-o选项,获取的内容会直接在终端输出。
  • -O :这个选项会以服务器端的文件名来保存文件。比如,curl -O http://example.com/document.pdf会下载文件并保存为本地文件document.pdf,文件名与服务器端的文件名相同。

1.3.2. 断点续传

1.3.2.1. HTTP 协议下的断点续传

curl命令通过-C -选项来实现断点续传。例如,你之前在下载一个大文件http://example.com/bigfile.zip,传输过程中中断了,下次想要继续下载时,可以使用以下命令:

curl -C - -o bigfile.zip http://example.com/bigfile.zip

解释:

  • -C -:告诉curl从之前中断的位置继续下载。-表示curl会自动检测上次下载的位置。
  • -o bigfile.zip-o选项用于指定输出文件名,这里将下载的文件保存为bigfile.zip
  • http://example.com/bigfile.zip:这是要下载文件的 URL。
1.3.2.2. FTP 协议下的断点续传

在 FTP 协议下,情况稍有不同。假设你要从 FTP 服务器ftp://example.com下载文件bigfile.zip,并且要进行断点续传,首先需要知道文件的大小以及上次下载的位置。

一般可以使用curl-r选项来指定下载范围。比如,你已经知道上次下载到了文件的一半位置(假设文件大小为 1000 字节,已经下载了 500 字节),可以使用以下命令继续下载:

curl -r 501 -o bigfile.zip ftp://example.com/bigfile.zip

解释:

  • -r 501-r选项用于指定下载文件的范围,这里表示从第 501 字节开始下载,直到文件结束。
  • -o bigfile.zipftp://example.com/bigfile.zip的含义与 HTTP 协议下相同,分别是指定输出文件名和要下载文件的 URL。

2. wget

2.1. 介绍

wget是一个在命令行下用于从网络上下载文件的自由软件。它支持多种网络协议,如 HTTP、HTTPS 和 FTP 等,并且功能强大、使用方便,在 Linux 和 Unix 系统中被广泛应用。

2.2. 常用选项

2.2.1. 简单下载文件

例如,要从http://example.com/file.txt下载一个文件,使用命令wget http://example.com/file.txt即可。wget会将文件下载到当前目录下,并且在下载过程中会显示下载进度,包括下载的百分比、已下载的字节数、预估剩余时间等信息。

2.2.2. 指定下载目录

如果想把文件下载到指定的目录,可以使用-P参数。例如,wget -P /home/user/downloads http://example.com/file.txt会将文件下载到/home/user/downloads目录下。

2.2.3. 断点续传功能

wget具有强大的断点续传功能。如果下载过程中网络中断或者手动停止了下载,再次执行相同的wget命令,它会自动从上次中断的位置继续下载。例如,已经开始下载一个大文件,中途中断后,再次运行之前的wget命令,它会检测到本地已下载的部分,然后继续下载剩余部分。

3. fetch

3.1. 介绍

fetch是一个方便的网络文件下载工具。它能够从多种网络协议(如 HTTP、HTTPS、FTP 等)的服务器获取文件,并且可以对下载过程进行一定程度的控制。

3.2. 基本语法

fetch [options] [URL]

3.3. 常用选项

  • -o, --output :用于指定下载文件后的保存文件名。例如,fetch -o local_file.txt http://example.com/remote_file.txt会将从http://example.com获取的remote_file.txt文件保存为本地的local_file.txt
  • -R, --rename - to :这个选项也用于文件重命名。与-o稍有不同的是,它会在下载过程中动态地将获取的文件重命名。例如,fetch -R newname.txt http://example.com/file.txt会将下载的文件直接重命名为newname.txt
  • -a, --append :如果目标文件已经存在,-a选项会将下载的内容追加到已存在的文件末尾。例如,fetch -a existing_file.txt http://example.com/additional_content.txt会把从http://example.com获取的文件内容添加到existing_file.txt的末尾。
  • -v, --verbose :用于显示详细的下载过程信息,包括连接信息、文件大小、下载速度等。例如,fetch -v http://example.com/file.txt会在终端显示详细的下载操作信息,这对于了解下载情况和调试可能出现的问题很有帮助。
  • -m, --mirror :可以用于镜像一个网站或目录。它会尝试下载指定 URL 下的所有文件和子目录,尽可能地复制原始的网络资源结构。不过这个功能可能受到服务器权限和网站结构复杂性的限制。例如,fetch -m http://example.com会尝试创建http://example.com的一个镜像。
相关推荐
筏.k1 小时前
grep、wc 与管道符快速上手指南
linux
Johny_Zhao1 小时前
华为MAAS、阿里云PAI、亚马逊AWS SageMaker、微软Azure ML各大模型深度分析对比
linux·人工智能·ai·信息安全·云计算·系统运维
CodeOfCC1 小时前
c语言 封装跨平台线程头文件
linux·c语言·windows
科文小白狼1 小时前
Linux下VSCode开发环境配置(LSP)
linux·vscode·里氏替换原则·lsp
jugt3 小时前
CentOS 7.9安装Nginx1.24.0时报 checking for LuaJIT 2.x ... not found
linux·运维·centos
多多*4 小时前
LUA+Reids实现库存秒杀预扣减 记录流水 以及自己的思考
linux·开发语言·redis·python·bootstrap·lua
何双新5 小时前
第21讲、Odoo 18 配置机制详解
linux·python·开源
21号 15 小时前
9.进程间通信
linux·运维·服务器
藥瓿亭10 小时前
K8S认证|CKS题库+答案| 3. 默认网络策略
运维·ubuntu·docker·云原生·容器·kubernetes·cks
Gaoithe10 小时前
ubuntu 端口复用
linux·运维·ubuntu