当前位置:首页 > 技术 > 正文内容

Linux 环境下 wget 命令深度解析与实战技巧

访客 技术 2026年9月1日 1

递归目录下载实战

在 Linux 运维场景中,经常需要从远程服务器同步整个资源目录。使用 wget 的递归模式配合特定参数,可以精确控制下载范围。

wget -r -np -nH --cut-dirs=2 --accept '*.tar.gz' http://mirror.example.org/pub/software/

上述命令的关键参数含义如下:

  • -r: 启用递归下载模式。
  • -np: 禁止向上追溯父级目录,防止拉取无关数据。
  • -nH: 移除本地文件结构中的主机名层级。
  • --cut-dirs=2: 忽略目标 URL 的前两级路径。
  • --accept: 白名单机制,仅保留指定后缀的文件(如 .tar.gz)。

核心功能参数速查

wget 支持断点续传、后台运行及代理配置等功能,以下是高频使用的选项分类整理。

连接与重试策略

  • -c, --continue: 开启断点续传,自动检测已存在文件片段并从中继位置继续。
  • -t, --tries: 设定最大重试次数,输入 0 表示无限重试直至成功。
  • -T, --timeout: 定义连接超时阈值(秒),默认通常为 17 秒。

文件控制

  • -nc: 避免覆盖服务器上已有的同名文件。
  • --convert-links: 将下载后的 HTML 或 CSS 内部链接转换为本地相对路径。
  • --no-clobber: 若文件不存在则下载,存在则跳过。

批量部署脚本示例

下载完成后,通常需要对本地软件包进行自动化安装。以下脚本展示了如何遍历 RPM 包进行批量安装,并在出错时提供反馈。

#!/bin/bash
# 定义软件包存储目录
PKG_ROOT="/opt/deploy/packages"

# 检查目录是否存在
if [ ! -d "$PKG_ROOT" ]; then
    echo "错误:目录 $PKG_ROOT 未找到"
    exit 1
fi

# 循环安装所有 rpm 文件
install_count=0
for pkg_file in "${PKG_ROOT}"/*.rpm; do
    if [ -f "$pkg_file" ]; then
        echo "正在安装:$(basename "$pkg_file")"
        rpm -ivh --force "$pkg_file" 2>&1 && ((install_count++)) || echo "安装失败:$pkg_file"
    fi
done

echo "完成安装,总数:$install_count"

定时任务与自动化调度

对于大文件或带宽受限场景,建议结合 crontab 实现夜间自动更新。配置时需确保服务进程被正确管理,避免占用白天高峰资源。

# 编辑 crontab
*/0 * * * * wget -c -N -q http://data.example.net/update.tar.gz -P /tmp/backup

利用 -N (--timestamping) 参数可比较服务端时间戳,仅当源文件较新时才触发传输。同时建议在非工作时段执行,并设置系统清理任务以释放缓存空间。

网络环境与认证配置

部分内网环境需要通过代理访问外部资源。需在用户主目录下创建 .wgetrc 配置文件来持久化代理设置:

http-proxy = http://proxy.internal:8080
https-proxy = http://proxy.internal:8080
ftp-proxy = http://proxy.internal:8080

若目标站点启用了 HTTP Basic Auth,可通过命令行参数直接注入凭证:

wget --user=admin --password=Secret123 http://secure.server.com/auth-resource.zip

URL 列表生成方法

当需要下载网页内链生成的多个文件时,可先生成索引列表再喂给 wget。

# 提取包含特定后缀的资源地址
curl -L http://source.website/files/index.html | \
grep -o 'href="[^"]*\.(jpg|png)">' | \
sed 's/href="//' | sed 's/">//' > url_list.txt

# 批量读取执行
wget -i url_list.txt

常用参数汇总

下表罗列了 wget 的主要参数及其应用场景。

参数作用描述
-r递归下载整个站点
-m镜像模式,等同 -r -N -l inf --no-remove-listing
-k转换链接为本地路径
-P PREFIX设定下载文件的保存前缀目录
-o FILE将日志输出重定向至指定文件
-b后台运行并记录到 wget-log
A LIST接受列表(Accept List)
R LIST拒绝列表(Reject List)
标签: Linuxwget
返回列表

上一篇:Vue 3 Pinia 状态管理与响应式机制详解

没有最新的文章了...

相关文章

Linux crontab 详解

1) crontab 是什么cron 是 Linux 的定时任务守护进程;crontab 是用来编辑/查看“按时间周期执行命令”的表(cron table)。常见两类:用户 crontab:每个用户一份(crontab -e 编辑)系统级 crontab / cron.d:可指定执行用户(/etc/crontab、/etc/cron.d/*)2) crontab 时间...

富文本里可以允许的 HTML 属性

一、所有标签默认允许的安全属性(极少)class        (可选)id           (通常建议禁用)title️ 注意:id 容易被滥用做锚点注入,很多系统直接禁用class 允许的话最好只允许固定前缀(如 editor-*)二、a 标签允许属性<a href="" t...

Mac 安装 Node.js 指南

方法一:通过官网安装包(最简单,适合初学者)如果你只是想快速安装并开始使用,这是最直接的方法。访问 Node.js 官网。页面会显示两个版本:LTS (Recommended For Most Users):长期支持版,最稳定。建议选这个。Current:最新特性版,包含最新功能但可能不够稳定。下载 .pkg 安装包并运行。按照安装向导点击“下一步”即可完成。方法二:使用 Homebrew 安装(...

Dom\HTML_NO_DEFAULT_NS 的副作用:自动加闭合标签

在使用Dom\HTMLDocument时,Dom\HTML_NO_DEFAULT_NS 将禁止在解析过程中设置元素的命名空间, 此设置是为了与DOMDocument向后兼容而存在的。当使用它时,已知的一个副作用就是:自动加闭合标签例如 </img> 为什么会这样?当你使用:Dom\HTML_NO_DEFAULT_NS文档会变成 无命名空间模式,此时内部更接近 XML...

Laravel 事件和监听器创建

在 Laravel 中,使用 Artisan 命令创建 Events(事件) 和 Listeners(监听器) 是非常高效的。你可以通过以下几种方式来实现:1. 手动创建单个 Event如果你只想创建一个事件类,可以使用 make:event 命令:Bashphp artisan make:event UserRegistered执行后,文件将生成在 app/Even...

自定义域名解析神器 dnsmasq

什么是 dnsmasq?dnsmasq 是一个轻量级、功能强大的网络服务工具,专为小型和中等规模网络设计。它是一个综合的网络基础设施解决方案[1]。dnsmasq 能做什么?功能说明应用场景DNS 转发与缓存将 DNS 查询转发到上游服务器(ISP、Google DNS 等),并在本地缓存结果加快 DNS 查询速度,减少外部 DNS 流量本地 DNS解析本地网络设备的主机名,无需编辑&n...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。