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

时间:2012-05-23 01:29:12

标签: wget

我想将一个简单的受密码保护的Web门户镜像到一些我希望保留镜像的数据。最新。本质上,这个网站只是一个目录列表,其中数据被组织到文件夹和文件夹中。我真的不在乎保留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 OK
  长度:2677(2.6K)[text / html]
  保存到:`web.server.org/folder/index.html'   100%[=============================================== ================================================== =====================>] 2,677 - .- K / s in 0s

     

最后修改的标题丢失 - 时间戳已关闭。
  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尝试在每次尝试用户名/密码之前尝试连接未经过身份验证一样。

谢谢,Mark

3 个答案:

答案 0 :(得分:5)

Pavuk(http://www.pavuk.org)看起来像一个很有前途的替代品,允许你镜像网站,排除基于网址模式和文件扩展名的文件...但是pavuk 0.9.35 seg-faults /在中间随机死亡长期转让和似乎没有积极开发(此版本于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-日期.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通配符不跨越'/',因此您需要非常专门地形成查询以避免下载整个文件夹。

标记

答案 1 :(得分:2)

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 ....

答案 2 :(得分:1)

wget:http://linuxgazette.net/160/misc/lg/how_to_make_wget_exclude_a_particular_link_when_mirroring.html无法使用

嗯,我不确定新版本。

关于401代码,不保留任何状态(cookie不用于HTTP身份验证),因此必须在每次请求时发送用户名和密码。 wget尝试用户&的请求在诉诸之前先通过。