我想将一个简单的受密码保护的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/
Run Code Online (Sandbox Code Playgroud)
这会产生这样的输出,确认被下载的文件(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为0最后修改的标题丢失 - 时间戳已关闭.
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尝试在尝试用户名/密码之前每次连接未经过身份验证一样.
谢谢,马克
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
Run Code Online (Sandbox Code Playgroud)
由于--exclude-directories通配符不跨越'/',因此您需要非常专门地形成查询以避免下载整个文件夹.
标记
Parameter --reject 'pattern'实际上对我来说wget 1.14有用。
例如:
wget --reject rpm http://somerpmmirror.org/site/
Run Code Online (Sandbox Code Playgroud)
所有*.rpm文件根本没有下载,只有索引。
警告:如果文件模式与工作目录中的文件匹配,则 bash 可能会无意中扩展文件模式。请使用引号以避免这种情况:
touch blahblah.rpm
# working
wget -R '*.rpm' ....
# working
wget -R "*.rpm" ....
# not working
wget -R *.rpm ....
Run Code Online (Sandbox Code Playgroud)
wget 不可能:http://linuxgazette.net/160/misc/lg/how_to_make_wget_exclude_a_pspecial_link_when_mirroring.html
好吧,不过我不确定新版本。
关于 401 代码,不保留任何状态(cookie 不用于 HTTP 身份验证),因此每次请求都必须发送用户名和密码。wget 在没有用户的情况下尝试请求并先通过,然后再诉诸它。
| 归档时间: |
|
| 查看次数: |
16098 次 |
| 最近记录: |