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.zip
和ftp://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
的一个镜像。