我想把一个简单的有密码保护的门户网站镜像到一些我想保持镜像和更新的数据上。本质上,这个网站只是一个目录列表,将数据组织到文件夹中&我并不真正关心是否保存html文件和其他格式化元素。但是有一些很大的文件类型太大,无法下载,所以我想忽略它们。
使用wget -m -R/--reject
标志几乎做了我想要的事情,除了下载所有文件,然后如果它们与-R标志匹配,那么它们将被删除。
下面是我如何使用wget
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
每次在尝试用户名/密码之前,都会尝试未经身份验证的连接。
谢谢,马克
发布于 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
做到了这一点:
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
通配符不会跨越'/',因此您需要非常明确地构造查询,以避免下载整个文件夹。
标记
发布于 2018-06-01 23:23:50
实际上,Parameter --reject 'pattern'
在wget 1.14中为我工作。
例如:
wget --reject rpm http://somerpmmirror.org/site/
所有的*.rpm
文件都没有下载,只有索引。
警告:如果文件模式与工作目录中的文件相匹配,则bash可能会无意中对其进行扩展。请使用引号来避免这种情况:
touch blahblah.rpm
# working
wget -R '*.rpm' ....
# working
wget -R "*.rpm" ....
# not working
wget -R *.rpm ....
发布于 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的请求,然后再使用它。
https://stackoverflow.com/questions/10712344
复制相似问题