首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >镜像http网站,不包括某些文件

镜像http网站,不包括某些文件
EN

Stack Overflow用户
提问于 2012-05-23 09:29:12
回答 3查看 18.7K关注 0票数 9

我想把一个简单的有密码保护的门户网站镜像到一些我想保持镜像和更新的数据上。本质上,这个网站只是一个目录列表,将数据组织到文件夹中&我并不真正关心是否保存html文件和其他格式化元素。但是有一些很大的文件类型太大,无法下载,所以我想忽略它们。

使用wget -m -R/--reject标志几乎做了我想要的事情,除了下载所有文件,然后如果它们与-R标志匹配,那么它们将被删除。

下面是我如何使用wget

代码语言:javascript
复制
wget --http-user userName --http-password password -R index.html,*tiff,*bam,*bai -m http://web.server.org/

这将产生如下输出,确认已排除的文件(index.html) (a)已下载,然后(b)被删除:

...

--2012-05-23 09:38:38-- http://web.server.org/folder/

重新使用到web.server.org:80的现有连接。

HTTP请求已发送,正在等待响应...需要401授权

重新使用到web.server.org:80的现有连接。

HTTP请求已发送,正在等待响应...200好的

长度: 2677 (2.6K) text/html

保存到:web.server.org/folder/index.html' 100%[======================================================================================================================>] 2,677 --.-K/s in 0s Last-modified header missing -- time-stamps turned off. 2012-05-23 09:38:39 (328 MB/s) -web.server.org/folder/index.html‘保存了2677/2677删除了web.server.org/folder/index.html,因为它应该被拒绝。...

有没有办法强制wget在下载之前拒绝该文件?

有没有我应该考虑的替代方案?

另外,尽管我提供了用户名和密码,但为什么每个下载的文件都会出现401 Authorization Required错误。这就像wget每次在尝试用户名/密码之前,都会尝试未经身份验证的连接。

谢谢,马克

EN

回答 3

Stack Overflow用户

发布于 2012-05-28 08:37:17

Pavuk (http://www.pavuk.org)看起来像是一个很有前途的替代方案,它允许你镜像网站,排除基于url模式和文件扩展名的文件。但pavuk 0.9.35在长时间传输过程中随机出现故障/死亡&似乎没有得到积极开发(此版本构建于2008年11月)。

仅供参考,以下是我是如何使用它的:

pavuk -mode mirror -force_reget -preserve_time -progress -Robots -auth_scheme 3 -auth_name x -auth_passwd x -dsfx 'html,bam,bai,tiff,jpg' -dont_leave_site -remove_old -cdir /path/to/root -subdir /path/to/root -skip_url_pattern ’*icons*’ -skip_url_pattern '*styles*' -skip_url_pattern '*images*' -skip_url_pattern '*bam*' -skip_url_pattern '*solidstats*' http://web.server.org/folder 2>&1 | tee pavuk-date.log

最后,wget --exclude-directories做到了这一点:

代码语言:javascript
复制
wget --mirror --continue --progress=dot:mega --no-parent \
--no-host-directories --cut-dirs=1 \
--http-user x --http-password x \
--exclude-directories='folder/*/folder_containing_large_data*' --reject "index.html*" \
--directory-prefix /path/to/local/mirror
http://my.server.org/folder

由于--exclude-directories通配符不会跨越'/',因此您需要非常明确地构造查询,以避免下载整个文件夹。

标记

票数 6
EN

Stack Overflow用户

发布于 2018-06-01 23:23:50

实际上,Parameter --reject 'pattern'wget 1.14中为我工作。

例如:

代码语言:javascript
复制
wget --reject rpm http://somerpmmirror.org/site/

所有的*.rpm文件都没有下载,只有索引。

警告:如果文件模式与工作目录中的文件相匹配,则bash可能会无意中对其进行扩展。请使用引号来避免这种情况:

代码语言:javascript
复制
touch blahblah.rpm
# working
wget -R '*.rpm' ....
# working
wget -R "*.rpm" ....
# not working
wget -R *.rpm ....
票数 4
EN

Stack Overflow用户

发布于 2012-05-23 09:42:26

不能使用wget:http://linuxgazette.net/160/misc/lg/how_to_make_wget_exclude_a_particular_link_when_mirroring.html

不过,我对更新的版本不是很确定。

大约401代码,不保留状态(cookie不用于HTTP身份验证),因此用户名和密码必须随每个请求一起发送。wget先尝试不使用user & pass的请求,然后再使用它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10712344

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档