Linux 命令和 Shell 技能
wget:永不休眠的下载程序
礼貌地进行镜像 wget 是一种以小时为单位的工作卷曲:镜像、存档、递归拉取以及在无人监视时运行的 cron 批处理。它会递归,尊重 robots.txt,默认恢复中断的传输,并根据速率限制和等待间隔调整自己的速度,这是礼貌的旋曲留给调用者的。这两个工具之间的划分是明确的:wget 用于批量和耐心,curl 用于精确性,并且了解这两种工具的团队很少需要第三个安装程序。
要点
- 镜像是一行: wget --mirror --convert-links --adjust-extension --no-parent https://docs.example.com;省略 --no-parent 和文档档案悄悄地变成了它上面的所有内容的爬行。
- 免费恢复和重试:wget -c 选择备份中断的传输,并且 --tries=10 --waitretry=5 渡过中途出现问题的服务器,而不是在第一次抽搐时使作业失败。
- 礼貌有标志:--limit-rate=200k、--wait=1 和 --random-wait 防止镜像触发上游速率限制或共享服务器滥用条款;共享主机加上不受限制的爬虫是一段短暂的友谊。默认情况下,
- robots.txt 受到尊重; -e robots=off 故意覆盖它,并且使用该覆盖来对抗其他人的生产站点,这就是批量下载变成事件票证的方式。
- wget -O /dev/null -nv https://host/health 是一个单行监控探测器,其退出代码携带诊断:4 是网络故障,8 是服务器错误,并且两者都击败静默 cron。
- 转换很重要:--convert-links 重写镜像站点以进行离线导航,--adjust-extension 将 CMS 生成的页面保存在本地工具可以服务的扩展下。
- cron 中的批量作业获取锁定文件,或重叠运行写入彼此的半完成文件,同时 --waitretry 悄悄地将作业延伸到其窗口之外; wget 没有内部互斥体。
- 了解边界:表单、cookie-heavy 会话和 API 端点属于curl,JavaScript 构建的页面镜像为空壳,因为 wget 遵循链接,而不是脚本。
一线手记
一个没有 --no-parent 的镜像一夜之间就进入了客户端 40 GB 的媒体库,几乎填满了磁盘。礼貌标志设置一次并永久复制。
常见问题
为什么我的镜像只有一页?
范围标志完成了某人想要撤消的工作:robots.txt 限制、--no-parent、深度限制或正在 JavaScript 渲染的网站。 wget 跟踪它可以看到的链接;在指责该工具之前检查 -o wget.log。
我什么时候应该选择 wget 而不是curl 进行单次下载?
对于任何可恢复或 cron 可靠的内容:-c 延续、内置重试和时间戳 (--timestamping) 使 wget 成为低关注度的选择;仅当您自己组装时,curl 才能为您提供相同的效果。
镜像公共网站是否合法或礼貌?
所有权决定合法性,robots.txt 和加载决定礼貌:尊重 robots 文件,限制到接近人类的速度,并在目标提供官方导出或 API 时更喜欢官方导出或 API。
为什么有些网站对普通 wget 返回 403?
用户代理过滤,通常是有意的; --user-agent='Mozilla/5.0' 可以让您通过,但过滤后的 403 也意味着操作员正在观看,因此对话或 API 是更好的下一步。
Kinetikatech 如何在linux 命令和 shell 技能方面为您提供帮助
说实话,很多团队都是自己先试过才来找我们:决定管理员是操作服务器还是对抗服务器的命令和脚本编写习惯:使用每个基本安装中的工具搜索、转换、传输和监督文本和进程。我们的Linux 服务器安全和服务器管理服务就是为了让您不必在linux 命令和 shell 技能上交学费:部署、值守与凌晨 3 点的突发状况,都由我们负责。