Linux命令-wget(非交互式网络下载工具)

📅 发布时间:2026/8/22 21:05:53
Linux命令-wget(非交互式网络下载工具) Linux命令-wget非交互式网络下载工具语法常用选项基础用法1. 基本下载2. 断点续传和重试3. 限速下载4. 批量下载5. 递归下载镜像网站6. FTP 下载7. 实用脚本示例8. wget 与 curl 对比wgetGNU Wget是非交互式网络下载工具支持 HTTP、HTTPS 和 FTP 协议。它可以在后台运行、支持断点续传、递归下载整个网站、限速下载是自动化下载任务的首选工具。wget 的设计理念是非交互——即使在没有用户登录的情况下如 cron 任务它也能可靠地完成下载任务。curl 虽然功能更丰富但 wget 在批量下载和网站镜像方面更胜一筹。语法wget [选项] URL...常用选项选项含义-O指定输出文件名-c断点续传-b后台下载-q安静模式-i从文件读取 URL 列表-r递归下载-l递归深度-np不追溯父目录--limit-rate限速如 100k, 1m-N时间戳检查仅下载更新的-A仅接受指定后缀的文件-R排除指定后缀的文件-t重试次数-P下载到指定目录前缀基础用法1. 基本下载# 下载单个文件wgethttps://example.com/file.zip# 指定输出文件名wget-Omyfile.zip https://example.com/file.zip# 下载到指定目录wget-P/tmp/downloads/ https://example.com/file.zip# 后台下载输出写入 wget-logwget-bhttps://example.com/large_file.iso# 查看进度: tail -f wget-log# 安静模式wget-qhttps://example.com/file.zip2. 断点续传和重试# 断点续传-c 会自动检测已下载部分wget-chttps://example.com/bigfile.iso# 指定重试次数wget-t5https://example.com/unstable_server/file.zip# 无限重试慎用wget-t0https://example.com/file.zip# 组合使用wget-c-t10-bhttps://example.com/huge_dataset.tar.gz3. 限速下载# 限制下载速度为 500KB/swget--limit-rate500k https://example.com/bigfile.iso# 限制为 2MB/swget--limit-rate2m https://example.com/file.zip# 避免占用全部带宽wget-c--limit-rate1024k-bhttps://example.com/iso/ubuntu.iso4. 批量下载# 从 URL 列表文件下载caturls.txtEOF https://example.com/file1.zip https://example.com/file2.zip https://example.com/file3.zip EOFwget-iurls.txt# 生成 URL 列表并下载foriin$(seq110);doechohttps://example.com/images/photo_${i}.jpgdoneimage_urls.txtwget-iimage_urls.txt-P./photos/# 限制并发数需要配合 xargs 或其他工具caturls.txt|xargs-P4-I{}wget-q{}5. 递归下载镜像网站# 镜像单个页面wget-r-l1-p-khttps://example.com/page.html# -r: 递归, -l 1: 1层深度, -p: 下载页面所需资源, -k: 转换链接# 镜像整个网站⚠️ 注意节制wget-r-l3-np-k-phttps://example.com/docs/# -np: 不追溯父目录限制在 /docs/ 内# 仅下载特定类型文件wget-r-A.pdf,.dochttps://example.com/documents/# 排除特定类型文件wget-r-R.exe,.ziphttps://example.com/downloads/6. FTP 下载# 基本 FTP 下载匿名wgetftp://ftp.example.com/pub/file.zip# FTP 带认证wget--ftp-userusername --ftp-passwordpass ftp://ftp.example.com/private/file.zip# 递归下载 FTP 目录wget-rftp://ftp.example.com/pub/docs/7. 实用脚本示例#!/bin/bash# 带重试和通知的健壮下载脚本download_with_retry(){localurl$1localoutput${2:-$(basename $url)}localmax_retries5localretry0while[$retry-lt$max_retries];doecho[尝试$(($retry1))/$max_retries] 下载$urlifwget-c-q--show-progress-O$output$url;thenecho[成功]$outputreturn0fi((retry))echo[失败] 等待 10 秒后重试...sleep10doneecho[放弃]$url下载失败return1}# 下载并验证download_and_verify(){localurl$1localchecksum_url${url}.sha256# 下载文件wget-c$url||return1# 下载校验和wget-q$checksum_url-O/tmp/checksum.txt2/dev/null# 验证if[-f/tmp/checksum.txt];thenlocalfilename$(basename$url)cd$(dirname$filename2/dev/null||echo.)sha256sum-c/tmp/checksum.txt2/dev/null\echo[校验通过]||\echo[校验失败] 文件可能损坏cd-/dev/nullfi}# 使用download_with_retryhttps://example.com/large_file.tar.gzmy_download.tar.gz8. wget 与 curl 对比特性wgetcurl递归下载内置需要外部脚本断点续传-c-C -协议支持HTTP/HTTPS/FTP20 协议API 交互弱强POST/PUT/DELETE默认行为存为文件输出到 stdout适用场景下载/镜像API 测试/数据传输## 注意事项 递归下载网站时请遵守 robots.txt 规则使用 -e robotsoff 可以忽略但可能违反网站政策。下载公共数据时请设置合理间隔-w 1 每次请求间隔 1 秒。