在 Linux 系统中,curlwget 是两个非常常用的命令行工具,用于从网络下载文件或与服务器交互。它们各有特点,适合不同的场景。以下是它们的详细介绍和用法。

1. curl

curl 是一个强大的命令行工具,用于从服务器传输数据或向服务器传输数据。它支持多种协议(如 HTTP、HTTPS、FTP、SFTP 等),并且可以处理复杂的请求(如 POST 请求、设置请求头等)。

安装 curl

大多数 Linux 发行版默认已安装 curl。如果没有安装,可以使用以下命令安装:

# Ubuntu/Debian
sudo apt-get install curl

# CentOS/RHEL
sudo yum install curl

# Fedora
sudo dnf install curl

基本用法

  • 下载文件

    curl -O http://example.com/file.zip

    -O 表示将文件保存为远程文件的原始名称。

  • 下载文件并指定本地文件名

    curl -o myfile.zip http://example.com/file.zip

    -o 后面跟本地文件名。

  • 断点续传

    curl -C - -O http://example.com/largefile.zip

    -C - 表示从上次中断的位置继续下载。

  • 下载多个文件

    curl -O http://example.com/file1.zip -O http://example.com/file2.zip
  • 发送 HTTP POST 请求

    curl -d "param1=value1&param2=value2" http://example.com/api

    -d 用于发送 POST 数据。

  • 设置请求头

    curl -H "Content-Type: application/json" http://example.com/api
  • 下载到标准输出(stdout)

    curl http://example.com/file.txt > file.txt

2. wget

wget 是一个专注于下载文件的工具,支持 HTTP、HTTPS 和 FTP 协议。它的特点是简单易用,并且支持断点续传和批量下载。

安装 wget

大多数 Linux 发行版默认已安装 wget。如果没有安装,可以使用以下命令安装:

# Ubuntu/Debian
sudo apt-get install wget

# CentOS/RHEL
sudo yum install wget

# Fedora
sudo dnf install wget

基本用法

  • 下载文件

    wget http://example.com/file.zip
  • 断点续传

    wget -c http://example.com/largefile.zip

    -c 表示断点续传。

  • 下载多个文件

    wget http://example.com/file1.zip http://example.com/file2.zip
  • 限制下载速度

    wget --limit-rate=50k http://example.com/file.zip

    将下载速度限制为 50 KB/s。

  • 后台下载

    wget -b http://example.com/largefile.zip

    -b 表示在后台下载。

  • 下载整个网站

    wget --mirror --convert-links --adjust-extension --page-requisites http://example.com

    这会递归下载整个网站,并调整链接以便离线查看。

  • 使用代理下载

    wget --proxy=on -e http_proxy=http://proxy.example.com:8080 http://example.com/file.zip
  • 下载到指定目录

    wget -P /path/to/directory http://example.com/file.zip

3. curlwget 的对比

特性curlwget
协议支持支持更多协议(如 HTTP、HTTPS、FTP、SFTP、SCP 等)主要支持 HTTP、HTTPS 和 FTP
功能更灵活,支持复杂的 HTTP 请求(如 POST、PUT 等)更专注于文件下载,适合批量下载和断点续传
断点续传支持(需使用 -C -支持(默认启用)
后台下载不直接支持,但可以通过重定向到后台运行支持(-b 参数)
递归下载不支持支持(--mirror 参数)
代理支持支持多种代理类型支持 HTTP 和 FTP 代理
输出控制更灵活,可以将输出重定向到文件或标准输出主要用于下载文件

4. 总结

  • 如果你需要 下载文件递归下载整个网站wget 是更好的选择。
  • 如果你需要 发送 HTTP 请求处理复杂的网络交互curl 更适合。
最后修改:2025 年 04 月 17 日
如果觉得我的文章对你有用,请随意赞赏