我正在尝试使用 wget 镜像一个网站,但我不想下载大量文件,所以我使用 wget 的--reject
选项不保存所有文件。但是,如果文件与我的拒绝选项匹配,wget 仍将下载所有文件,然后删除该文件。
是否有某种方法可以告诉 wget 不要遵循某些与某些 shell 通配符匹配的链接?如果 wget 无法做到这一点,是否有其他常见的 linux 命令可以做到这一点?
答案1
您也可以尝试HT轨道在我看来,它具有更灵活和直观的包含/排除逻辑。就像这样...
httrack "https://example.com" -O ExampleMirrorDirectory \
"-*" \
"+https://example.com/images/*" \
"-*.swf"
这些规则将按顺序应用,并将覆盖先前的规则......
- 排除一切
- 但包括https://example.com/images/*
- 但排除以 swf 结尾的任何内容
答案2
看起来这在 wget 中是不可能的
答案3
在“man wget”的--reject部分下:
“请注意,如果任何通配符 *、?、[ 或 ] 出现在 acclist 或 rejlist 的元素中,它将被视为模式,而不是后缀。”
如果您这样做,您可能希望给出您正在使用的模式以及您认为应该匹配的内容的示例,但事实并非如此。您说它们匹配,但您确定吗?
另外,请确保将此列表放在引号中,这样 shell 在将参数传递给 wget 之前不会扩展这些通配符。
即使你的系统没有 1.12 版本,也请阅读手册中的“文件类型”部分这里根据变更日志,维护者添加了一些注意事项:
* NEWS: Added documentation change re: --no-parents, and various
caveats on accept/reject lists behavior. Rearranged some items in
order of priority.
答案4
如何使用 wget?尝试按以下方式使用:
wget -r --reject=gif,jpg,swf http://norc.aut.ac.ir/
此命令将忽略 gif 和 jpg 和 swf 文件。