拓冰建站拓冰建站
首页 / 资讯中心 / 正文

wget命令行下载工具:从基础安装到高级应用全解析

1. 从“图形界面”到“命令行”为什么我们需要wget如果你习惯了在浏览器里点点鼠标看着进度条一点点填满来下载文件那么第一次听说wget时你可能会觉得它有点“原始”甚至“多余”。毕竟现在的下载管理器功能强大界面友好为什么还要去鼓捣一个黑底白字的命令行工具呢我最初接触wget也是带着这种疑问。直到有一次我需要从一台远程的 Linux 服务器上把一个几百兆的日志文件下载到本地进行分析。这台服务器只有最基础的命令行环境没有图形界面更别提安装什么下载软件了。就在我抓耳挠腮的时候同事轻飘飘地敲下一行命令wget http://example.com/path/to/logfile.tar.gz。几秒钟后文件就开始稳定地下载了。那一刻我意识到wget不是“多余”的它是在特定场景下唯一且最高效的选择。wget的全称是 “GNU Wget”它是一个在命令行环境下运行的、用于从网络上下载文件的自由软件。它的核心价值在于稳定、可靠、无需人工干预。你可以把它想象成一个极其专注、不知疲倦的“下载机器人”。它不关心界面是否花哨只专注于一件事按照你给的指令把文件从网络上一个字节一个字节地“搬”到你的电脑里。这种纯粹性恰恰是它在服务器管理、自动化脚本、批量下载等场景中无可替代的原因。对于系统管理员、开发者、数据分析师或者任何需要与远程服务器、大量网络资源打交道的人来说wget是一个必须掌握的基础工具。它可能不是你每天都会用到的“瑞士军刀”但绝对是工具箱里那个最可靠、关键时刻能救急的“扳手”。接下来我们就从零开始认识并准备好使用这个强大的工具。2.wget的核心能力与典型应用场景在深入命令行之前我们先搞清楚wget到底能做什么以及它最适合在哪些场合大显身手。这能帮助你理解为什么在图形化工具如此普及的今天它依然经久不衰。2.1 不只是“下载”wget的四大核心能力很多人把wget简单理解为“命令行下载器”这低估了它的能力。它的功能可以概括为以下几个方面支持多种协议最常用的是 HTTP、HTTPS 和 FTP。这意味着无论是从普通的网页链接还是从需要账号密码的 FTP 服务器wget都能处理。这是它作为通用下载工具的基础。递归下载与整站镜像这是wget的“杀手锏”之一。通过-r递归参数它可以沿着网页中的链接一层层地下载整个网站或目录结构。这对于备份网站、离线浏览、或者抓取特定结构下的所有资源如图片、样式表来说是极其高效的功能。强大的断点续传与后台执行网络不稳定文件太大没关系。wget默认支持断点续传-c参数。如果下载中途中断重新执行带-c的命令它会从断开的地方继续下载而不是重新开始。结合-b参数它还可以在后台运行即使你关闭了终端窗口下载任务也不会停止。高度可定制与自动化你可以通过丰富的命令行参数精确控制下载行为。例如限制下载速度--limit-rate、指定重试次数-t、设置等待时间-w、伪装浏览器标识-U以避免被某些网站屏蔽等。这些特性使得wget可以轻松地被集成到 Shell 脚本中实现全自动的下载任务。2.2 典型应用场景它在哪里最有用了解了能力我们来看看它具体用在哪儿。如果你遇到过以下任何一种情况那么wget就是你的菜服务器环境操作这是wget的主战场。在云服务器、虚拟主机、Docker 容器等没有图形界面的 Linux/Unix 环境中安装软件包、下载配置文件、获取数据源几乎全靠wget或它的“兄弟”curl。批量下载任务假设你需要从一个网页上下载所有链接的 PDF 文件或者从一个 FTP 目录里下载所有以.log结尾的日志文件。用浏览器一个个点那会是一场噩梦。用wget配合通配符或写一个简单的循环脚本几分钟就能搞定。构建自动化脚本在 CI/CD持续集成/持续部署流程中经常需要从特定地址拉取构建依赖、部署包或配置文件。wget因其稳定和可脚本化的特性成为这些自动化任务中的标准组件。网络条件受限或不稳定时在带宽很低、网络时断时续的环境下比如某些远程连接wget的断点续传和后台执行能力就显得尤为宝贵。你可以启动一个下载任务然后安心去做别的事不用担心它中途失败需要从头再来。数据采集与备份需遵守规则用于合法地备份自己的网站或者按照robots.txt协议规范地采集公开数据。wget的递归下载和深度控制功能可以很好地完成这类结构化数据的获取工作。注意使用wget进行递归下载或整站抓取时务必尊重目标网站的robots.txt文件并遵守其服务条款。过度频繁的请求可能会对目标服务器造成压力甚至导致你的 IP 被封锁。对于个人学习和小规模备份通常没有问题但对于大规模数据采集请务必谨慎并确保合法性。3. 环境准备如何获取并安装wgetwget并非天生就存在于所有电脑中。我们需要先确保它已经安装并且是最新的稳定版本。不同操作系统的安装方式略有不同。3.1 检查是否已安装在开始安装前最好先检查一下你的系统是否已经自带了wget。打开你的终端在 Linux/macOS 上叫 Terminal在 Windows 上可能是 PowerShell 或 WSL 终端输入以下命令wget --version如果系统返回了wget的版本信息例如GNU Wget 1.21.3 built on ...那么恭喜你可以直接跳到下一节。如果返回的是command not found未找到命令或类似的错误信息那么你就需要安装它。3.2 在不同操作系统上安装wgetLinux 发行版 (最常见)绝大多数 Linux 发行版都通过包管理器来安装软件这是最推荐的方式。基于 Debian/Ubuntu 的系统 (使用 apt)sudo apt update # 首先更新软件包列表 sudo apt install wget # 安装 wgetapt是 Debian 系发行版的包管理器。sudo表示以管理员权限运行需要输入你的用户密码。第一行update是为了确保获取到最新的软件源信息。基于 Red Hat/CentOS/Fedora 的系统 (使用 yum 或 dnf)# 对于 CentOS 7 / RHEL 7 等较老版本通常使用 yum sudo yum install wget # 对于 CentOS 8 / RHEL 8 / Fedora 等新版本使用 dnf (yum的下一代版本) sudo dnf install wgetArch Linux / Manjaro (使用 pacman)sudo pacman -S wgetmacOSmacOS 本身没有预装wget但可以通过非常流行的包管理器Homebrew来安装。如果你还没有安装 Homebrew可以访问 brew.sh 查看安装指令通常是一条简单的命令行。安装好 Homebrew 后在终端中执行brew install wgetHomebrew 会自动处理依赖并完成安装。Windows在原生 Windows 上使用wget有几种方式通过包管理器 Chocolatey 或 Scoop (推荐)如果你使用 Chocolatey在管理员权限的 PowerShell 中运行choco install wget如果你使用 Scoop在 PowerShell 中运行scoop install wget这种方式类似于 Linux 的包管理能方便地更新和管理。直接下载二进制文件 你可以从 GNU Wget 的官方 Windows 二进制页面 下载编译好的wget.exe。下载后你需要将其所在目录添加到系统的PATH环境变量中这样才能在任意位置的命令行中直接使用wget命令。对于不熟悉环境变量设置的新手这可能有点麻烦。使用 Windows Subsystem for Linux (WSL) (强烈推荐给开发者) 在 Windows 10/11 中启用 WSL安装一个 Linux 发行版如 Ubuntu。然后你就可以像在真正的 Linux 系统中一样使用apt等命令来安装wget。这是目前在 Windows 上获得最完整、最原生化 Linux 命令行体验的最佳方式。3.3 验证安装与基本测试安装完成后再次运行wget --version确认安装成功。为了进行一次最简单的测试我们可以尝试下载一个很小的文件比如 GNU 项目的首页wget https://www.gnu.org这条命令会下载https://www.gnu.org这个 URL 对应的内容一个 HTML 文件并默认以index.html的名字保存在当前目录。如果看到类似下面的输出就说明wget工作正常--2024-05-15 10:00:00-- https://www.gnu.org/ 正在解析主机 www.gnu.org (www.gnu.org)... 209.51.188.248 正在连接 www.gnu.org (www.gnu.org)|209.51.188.248|:443... 已连接。 已发出 HTTP 请求正在等待回应... 200 OK 长度未指定 [text/html] 正在保存至: “index.html” index.html [ ] 50.12K --.-KB/s 用时 0.1s 2024-05-15 10:00:00 (425 KB/s) - 已保存 “index.html” [51328])输出信息包含了连接建立、HTTP 响应状态码200 OK、文件大小、下载速度和时间等详细信息。这个简单的测试验证了你的wget已经就绪可以访问网络并下载文件。4. 第一次握手理解wget的基础命令结构现在工具已经准备好了让我们来拆解一下wget命令的基本构成。理解了这个结构你就能举一反三组合出各种复杂的下载指令。一条完整的wget命令通常遵循以下格式wget [选项]... [URL]...wget命令本身调用这个程序。[选项]...一个或多个以短横线-或双短横线--开头的参数用于修改wget的默认行为。这是wget强大功能的来源。例如-O指定输出文件名-P指定下载目录。[URL]...一个或多个要下载的文件的网络地址。你可以一次性提供多个 URLwget会按顺序下载它们。让我们看几个最基础、最常用的命令示例并详细解释它们做了什么示例1最简下载wget https://example.com/file.zip行为下载file.zip到当前命令行所在的目录。结果当前目录下会生成一个名为file.zip的文件。细节如果当前目录已存在同名文件wget默认会覆盖它除非使用了-nc不覆盖选项。下载过程中屏幕上会显示进度条、连接信息、速度、预计剩余时间等。示例2指定输出文件名wget -O my_downloaded_file.zip https://example.com/file.zip行为同样下载file.zip但保存到本地时将其重命名为my_downloaded_file.zip。为什么需要这个有时远程文件的名称没有意义如download.php?id123或者你想统一命名规范。-O大写字母O代表 Output参数后面紧跟你想要的本地文件名。注意如果使用-O那么无论原URL是什么所有下载内容都会写入这一个文件。这在下载单个文件时没问题但在递归下载时通常不这么用。示例3指定下载目录wget -P /path/to/my/folder https://example.com/file.zip行为将file.zip下载到/path/to/my/folder目录中。为什么需要这个你肯定不希望所有下载的文件都堆在桌面或家目录下。-P大写字母P代表 Prefix-directory参数允许你指定一个目录前缀文件会下载到那个目录里。如果目录不存在wget会尝试创建它。组合使用你可以同时使用-P和-O来指定目录和文件名wget -P /downloads -O data.zip https://example.com/largefile.zip示例4后台下载与日志记录wget -b -o download.log https://example.com/large_file.iso行为在后台-b下载大文件并将所有输出信息-o重定向到download.log日志文件中而不是打印在屏幕上。应用场景下载一个需要数小时的大型文件如系统镜像。你启动命令后终端可以关闭wget会在后台继续工作。你可以随时查看download.log文件来了解下载进度。检查后台任务启动后台任务后wget会告诉你一个进程IDPID。你也可以用ps aux | grep wget或jobs命令来查看后台任务。这些基础命令构成了使用wget的基石。在实际操作中最常犯的一个错误就是忘记当前所在的“工作目录”。你下载的文件会保存在哪里完全取决于你执行命令时终端所处的目录。因此养成一个好习惯在开始下载前先用pwd打印工作目录命令确认当前位置或用cd命令切换到目标目录。5. 核心参数详解让wget服从你的精细指挥仅仅会下载文件还不够我们需要wget能应对更复杂的情况网络不好怎么办网站有防盗链怎么办想定时下载怎么办这就需要用到它的核心参数了。下面我分类介绍一些最实用、最能解决实际问题的参数。5.1 控制下载行为限速、重试与断点续传网络环境复杂我们需要让wget更“智能”和“友好”。-c断点续传wget -c https://example.com/bigfile.partial作用继续下载一个未完成的文件。如果之前下载bigfile中断了本地会有一个不完整的bigfile.partial。使用-c参数wget会检查本地文件大小然后向服务器请求从该位置之后的数据。原理它依赖于服务器对Range请求头的支持。如今绝大多数 HTTP 服务器都支持此功能。这是下载大文件时的“保命”参数务必牢记。-t number/--triesnumber设置重试次数wget -t 5 https://unstable-server.com/file.txt作用当网络连接失败或服务器错误时自动重试。默认是20次对于不稳定的连接你可能希望减少重试次数如-t 3以快速失败对于非常重要的文件你可以设置一个很大的数字如-t 100。注意设置为0或inf表示无限重试。-w seconds/--waitseconds等待间隔wget -w 2 https://example.com/file{1..10}.jpg作用在两次请求之间等待指定的秒数。这在批量下载时非常有用可以避免对服务器造成瞬间的高频请求这被称为“礼貌性爬取”。上面例子中下载10个图片每下载一个会等待2秒。--limit-rateRATE限制下载速度wget --limit-rate200k https://example.com/large_video.mp4作用将下载速度限制在每秒 200KB。单位可以是k(KB),m(MB)。这个功能非常实用不影响他人在共享网络环境下避免单个下载占满全部带宽。绕过限速有些服务器会对高速下载进行限制适当限速反而可能获得更稳定的连接。测试模拟低速网络环境。5.2 处理网站交互Cookie、用户代理与认证有些网站需要登录或者对下载工具不友好wget也能模拟浏览器行为。--user-agentAGENTwget --user-agentMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 https://some-site.com/data.csv作用设置 HTTP 请求头中的User-Agent字段。有些网站会屏蔽默认的Wget标识通过将其伪装成常见的浏览器如 Chrome, Firefox可以顺利下载。实操心得你可以从浏览器的开发者工具Network 标签页中复制任意一个请求的User-Agent值来使用。--load-cookiesFILE和--save-cookiesFILE# 首先用浏览器登录网站并导出Cookie文件例如使用EditThisCookie等插件导出为Netscape格式的cookies.txt。 wget --load-cookiescookies.txt --keep-session-cookies https://member-site.com/private-file.zip作用加载本地Cookie文件让wget携带登录状态去访问需要认证的页面。--keep-session-cookies参数确保会话Cookie也被保留。这是下载需要登录才能访问的资源的关键技巧。--http-userUSER --http-passwordPASSwget --http-usermyusername --http-passwordmypassword https://example.com/protected/file.txt作用用于访问需要HTTP基础认证的页面。这种方式将密码明文写在命令行中存在安全风险仅用于测试或不重要的场景。更安全的方式是使用.netrc文件。5.3 递归下载与网站镜像wget的“重型武器”这是wget区别于简单下载器的核心功能但使用需格外小心。-r/--recursive开启递归下载。-l DEPTH/--levelDEPTH设置递归深度。-l 1表示只下载当前页面上的直接链接-l 2会再深入一层依此类推。-l inf表示无限深度慎用。-np/--no-parent不追溯至父目录。这是极其重要的参数。假设你在下载https://example.com/docs/tutorial/使用-np可以确保wget只下载tutorial目录及其子目录下的内容不会跑到docs或网站根目录去避免下载大量无关文件。-k/--convert-links下载完成后转换文档中的链接使其适合本地离线浏览。例如将https://example.com/image.jpg转换为相对路径./image.jpg。-p/--page-requisites下载显示一个完整HTML页面所需的所有文件包括图片、CSS样式表、JavaScript脚本等。-A LIST/--acceptLIST和-R LIST/--rejectLIST根据通配符模式接受或拒绝文件。例如-A *.pdf,*.doc只下载PDF和Word文档-R *.gif,*.tmp拒绝下载GIF和临时文件。一个完整的镜像示例wget -r -l 2 -np -k -p -w 3 --random-wait --user-agentMozilla https://example.com/docs/-r -l 2递归下载深度为2。-np不离开docs目录。-k转换链接供离线使用。-p下载页面所需的所有资源。-w 3 --random-wait每次请求等待3秒左右--random-wait会在0.5到1.5倍的基础等待时间之间随机更模拟人工。--user-agent伪装浏览器。这个命令可以相对“礼貌”且完整地将example.com/docs/目录下两层的内容镜像到本地。再次强调请务必遵守robots.txt并尊重网站负载。6. 实战演练从简单到复杂的下载案例理论说再多不如亲手试一试。下面我们通过几个由浅入深的实际案例来巩固对wget的理解。我建议你可以在自己的测试环境中跟着操作一遍。6.1 案例一下载单个公开文件并重命名场景你需要从某开源项目发布页面下载最新版本的压缩包但想给它一个更清晰的本地名字。# 假设发布页面的链接是动态的但我们知道最终文件链接 wget -O prometheus-latest.tar.gz https://github.com/prometheus/prometheus/releases/download/v2.45.0/prometheus-2.45.0.linux-amd64.tar.gz做了什么从 GitHub Releases 下载 Prometheus 2.45.0 的 Linux 64位压缩包并直接保存为prometheus-latest.tar.gz。这样即使将来版本号变了你本地的文件名仍然保持一致便于脚本引用。6.2 案例二从需要认证的FTP服务器下载场景公司内部有一个FTP服务器存放着每日的备份文件你需要下载昨天的一份。wget --ftp-userbackup_user --ftp-passwordyour_password ftp://ftp.internal.company.com/backups/db_backup_20240514.sql.gz做了什么使用指定的用户名和密码登录FTP服务器并下载指定的备份文件。安全警告密码在命令行历史中可见不安全。对于生产环境考虑使用.netrc文件或从环境变量读取密码。6.3 案例三批量下载序列文件场景一个网站有一系列按数字命名的图片如image1.jpg到image100.jpg。# 方法1使用Bash的大括号扩展在Linux/macOS的Bash或Zsh中有效 wget https://example.com/gallery/image{1..100}.jpg # 方法2写一个简单的循环 for i in {1..100}; do wget https://example.com/gallery/image${i}.jpg sleep 1 # 每次下载后休息1秒避免请求过快 done做了什么第一种方法利用Shell的特性一次性生成100个URL参数。第二种方法更可控可以方便地加入延迟、错误处理等逻辑。注意批量下载时务必使用-w或sleep增加延迟做一名有礼貌的网络公民。6.4 案例四递归下载一个技术博客的教程系列场景你想离线阅读某个博客上一个完整的教程系列该系列的所有文章都在/tutorial/python/目录下。wget -r -l 1 -np -k -p -w 2 --accept *.html,*.css,*.png,*.jpg --reject *.php https://awesome-blog.com/tutorial/python/-r -l 1 -np递归深度1只下载/tutorial/python/这一层页面上的链接不向父目录爬。-k -p为离线浏览优化链接并下载页面完整资源。-w 2每次请求间隔2秒。--accept和--reject只下载对阅读至关重要的HTML、CSS和图片文件拒绝可能存在的PHP等动态脚本文件。结果你会在本地得到一个awesome-blog.com目录里面包含了教程系列的所有文章用浏览器打开index.html就能像在线一样浏览并且所有链接都指向本地文件。7. 进阶技巧与脚本集成当你熟悉了基本操作后wget可以成为你自动化工作流中的强大一环。7.1 使用.netrc文件安全存储凭证将FTP或HTTP认证信息写在命令行或脚本里非常不安全。.netrc文件提供了一个解决方案。在你的家目录~下创建或编辑这个文件machine ftp.internal.company.com login backup_user password your_secure_password machine private.example.com login my_username password another_password然后设置文件权限确保只有你能读chmod 600 ~/.netrc之后使用wget访问这些机器时就无需再输入--ftp-user等参数wget会自动从.netrc文件中读取凭证。wget ftp://ftp.internal.company.com/backups/db_backup.sql.gz7.2 从文件列表中批量下载如果你有一个文本文件url_list.txt里面每行一个下载链接https://example.com/file1.iso https://example.com/file2.zip https://mirror.site/package.tar.xz可以使用-i参数来批量下载wget -i url_list.txt -P ~/Downloads/ -w 5-i参数告诉wget从指定文件中读取 URL。结合-P指定下载目录和-w设置等待时间可以安全、有序地完成大批量下载任务。7.3 集成到 Shell 脚本中wget的退出状态码$?可以用于判断下载是否成功0表示成功非0表示失败。这使得它可以被很好地集成到自动化脚本中。#!/bin/bash # 一个简单的下载并检查的脚本 DOWNLOAD_URLhttps://example.com/important_package.deb OUTPUT_FILE/tmp/package.deb echo 开始下载 $DOWNLOAD_URL ... wget -O $OUTPUT_FILE $DOWNLOAD_URL # 检查wget命令是否成功执行 if [ $? -eq 0 ]; then echo 下载成功文件保存在: $OUTPUT_FILE # 这里可以继续执行安装、校验等操作 # sudo dpkg -i $OUTPUT_FILE else echo 下载失败请检查网络或URL。 exit 1 fi这个脚本定义了下载链接和输出路径使用wget -O下载然后通过$?判断结果并给出相应的提示。你可以在此基础上扩展增加重试逻辑、文件校验如MD5、自动安装等功能。7.4 伪装与规避简单反爬对于一些有简单反爬机制的网站可以组合使用一些参数来提高成功率wget \ --user-agentMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 \ --refererhttps://google.com \ --headerAccept-Language: en-US,en;q0.9 \ --headerAccept: text/html,application/xhtmlxml,application/xml;q0.9,image/webp,*/*;q0.8 \ -w 10 --random-wait \ https://some-site-with-anti-bot.com/data.json--referer设置请求来源页有些网站会检查。--header自定义HTTP请求头使其更像来自真实浏览器。-w 10 --random-wait较长的随机等待降低请求频率。重要提醒这些技巧仅应用于对自己拥有权限的网站进行测试或下载明确允许下载的公开数据。未经授权爬取受版权保护或明确禁止的数据是违法的也会对目标网站造成不必要的负担。8. 常见问题排查与使用心得即使掌握了所有参数在实际使用中还是会遇到各种“坑”。这里分享一些我踩过的坑和对应的解决方案。8.1 证书错误与 SSL/TLS 问题在使用 HTTPS 链接时你可能会遇到如下错误ERROR: The certificate of ‘example.com’ is not trusted. ERROR: The certificate of ‘example.com’ hasnt got a known issuer.原因wget无法验证服务器提供的 SSL 证书的合法性。可能原因是1) 系统根证书库太旧2) 网站使用自签名证书3) 中间证书缺失。解决方案更新系统CA证书包对于 Linux运行sudo apt update sudo apt install ca-certificatesDebian/Ubuntu或类似命令。跳过证书检查不推荐仅用于测试使用--no-check-certificate参数。警告这会使连接面临中间人攻击风险切勿在对安全性有要求的场景下使用。指定自定义证书使用--certificateFILE参数指定特定的证书文件。8.2 连接超时与拒绝Connecting to example.com (example.com)|192.0.2.1|:443... failed: Connection timed out.原因网络不通、防火墙阻挡、服务器宕机或地址错误。排查步骤检查网络用ping example.com或curl -I https://example.com测试基本连通性。检查地址和端口确认 URL 是否正确特别是 HTTPS (443端口) 和 HTTP (80端口)。使用详细输出加上-vverbose参数查看详细的握手过程可能发现更多线索。尝试使用 IP如果域名解析有问题可以尝试直接用服务器的 IP 地址。检查本地代理如果你在公司网络或使用了代理可能需要为wget配置代理--proxyon --http-proxyhttp://your-proxy:port。8.3 递归下载陷入死循环或下载过多内容这是使用-r参数时最容易出现的问题。你本意是下载一个目录结果wget开始下载全站甚至链接到了外部网站。预防与解决务必使用-np(--no-parent)这是防止爬出目标目录的最重要开关。合理设置深度-l明确你需要几层链接不要用inf。使用接受/拒绝列表-A/-R精确控制你要的文件类型。使用-D限制域名-D example.com,sub.example.com只下载来自这些域名的链接。先做测试使用--spider模拟爬取不实际下载和-nv非详细输出组合来预览wget将会访问哪些链接wget -r -l 1 -np --spider -nv https://example.com/target/ 21 | grep ^--。这能让你在真正下载前看清它的意图。8.4 文件命名冲突与目录结构默认情况下wget会创建和远程服务器类似的目录结构。有时这很乱特别是当你想把所有文件都放在一个扁平目录里时。问题递归下载时不同目录下有同名文件如多个index.html会被覆盖。解决方案使用-nd--no-directories参数让所有文件都下载到同一级目录不创建子目录。但同名文件会被覆盖需谨慎。或者使用-x--force-directories强制创建完整的目录结构这是默认递归下载时的行为。8.5 个人使用心得先试后下对于不熟悉的网站或复杂的递归下载任务永远先加上--spider和-nv参数跑一遍看看wget到底想干什么。这能节省大量时间和流量避免下载一堆垃圾文件。限速是美德无论是递归爬取还是批量下载都加上--limit-rate和-w参数。对你的网络和目标服务器都是一种保护。善用日志对于长时间运行的后台任务-b一定要用-o指定日志文件。出现问题时有据可查。组合curl使用wget擅长“下载”而curl更擅长“传输数据”和与API交互。例如先用curl带Cookie访问一个页面解析出真实的文件下载链接再用wget去下载这个大文件。两者互补是命令行下的网络利器。理解退出码在脚本中根据wget的退出码$?做错误处理。常见的如0成功1通用错误2解析错误3文件I/O错误4网络失败5SSL验证失败6用户名/密码认证失败7协议错误8服务器返回错误响应。
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门