9

我想将一个简单的受密码保护的门户网站镜像到我想保持镜像和最新的一些数据。本质上,这个网站只是一个目录列表,其中的数据组织到文件夹中,我并不真正关心保留 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在尝试用户名/密码之前每次都尝试未经身份验证的连接。

谢谢,马克

4

4 回答 4

6

Pavuk ( http://www.pavuk.org ) 看起来像是一个很有前途的替代方案,它允许您镜像网站,不包括基于 url 模式和文件扩展名的文件......但是 pavuk 0.9.35 seg-faults/dies 在长期转移的中间,似乎没有积极开发(此版本于 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通配符不跨越“/”,因此您需要非常具体地形成查询以避免下载整个文件夹。

标记

于 2012-05-28T00:37:17.210 回答
4

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 ....
于 2018-06-01T15:23:49.787 回答
1

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

好吧,不过,我不确定是否有新版本。

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

于 2012-05-23T01:42:25.507 回答
1

wget -X directory_to_exclude[,other_directory_to_exclude] -r ftp://URL_ftp_server

服务器
    |-日志
    |-等
    |-缓存
    |-public_html
      |-图片
      |-videos(想排除)
      |-文件
      |-audio(想排除)

wget -X /public_html/videos,/public_html/audio ftp:SERVER/public_html/*

于 2015-12-20T16:02:34.467 回答