2012-05-23 37 views
5

me gustaría reflejar un simple portal web protegido por contraseña a algunos datos que me gustaría mantener reflejado &-actualizada. En esencia, este sitio web es sólo un listado de directorio con los datos organizados en carpetas & Realmente no me importa acerca de mantener los archivos html otros & elementos de formato. Sin embargo, hay algunos tipos de archivos enormes que son demasiado grandes para descargar, por lo que quiero ignorarlos.página web http espejo, con exclusión de ciertos archivos

El uso de la bandera wget -m -R/--reject casi hace lo que quiero, excepto que todos los archivos se descargan, y luego si coinciden con el distintivo -R, se eliminan.

Así es como estoy usando wget:

wget --http-user userName --http-password password -R index.html,*tiff,*bam,*bai -m http://web.server.org/ 

que produce una salida como ésta, lo que confirma que un archivo excluido (index.html) (a) se descarga, y (b) a continuación, se elimina:

...
--2012-05-23 09: 38: 38-- http://web.server.org/folder/
Reutilizando conexión con web.server.org:80 existente.
petición HTTP enviada, esperando respuesta ... 401 Se requiere autorización
Reutilizando conexión existente a web.server.org:80.
HTTP solicitud enviada, la respuesta a la espera de ... 200 OK
Longitud: 2677 (2.6k) [text/html]
de verano a: `web.server.org/folder/index.html' 100% [= ================================================== ================================================== =================>] 2,677 --.- K/s en 0s

Falta el encabezado de último modificado: marcas de tiempo desactivadas.
2012-05-23 09:38:39 (328 MB/s) - `web.server.org/folder/index.html' salvado [2677/2677]

Extracción web.server.org/folder /index.html ya que debe ser rechazado.

...

hay una manera de forzar wget para rechazar el archivo antes de descargarlo?
¿Hay alguna alternativa que deba considerar?

Además, ¿por qué recibo un error 401 Authorization Required por cada archivo descargado, a pesar de proporcionar el nombre de usuario & contraseña. Es como wget intenta conectarse sin autenticación cada vez, antes de intentar el nombre de usuario/contraseña.

gracias, Mark

+0

Ver la solución para modificar wget de esta pregunta (duplicada): http://stackoverflow.com/questions/12704197/wget-reject-still-downloads-file – taranaki

Respuesta

1

No es posible con wget: http://linuxgazette.net/160/misc/lg/how_to_make_wget_exclude_a_particular_link_when_mirroring.html

Bueno, no estoy seguro acerca de las versiones más recientes, sin embargo.

Sobre 401 de código, ningún estado se mantiene (cookie no se utiliza para la autenticación HTTP), por lo que el nombre de usuario y la contraseña debe ser enviado con cada petición. wget probar la solicitud sin usuario & pasar primero antes de recurrir a ella.

4

Pavuk (http://www.pavuk.org) parecía una alternativa prometedora que le permite duplicar sitios web, excluyendo archivos basados ​​en patrones de url y extensiones de nombre de archivo ... pero pavuk 0.9.35 seg-fallas/muere aleatoriamente en medio de largas transferencias & no parece estar desarrollado activamente (esta versión se construyó en noviembre de 2008).

FYI, así es como lo estaba utilizando:
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- fecha .log

al final, wget --exclude-directories hizo el truco:

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 

Desde los --exclude-directories comodines no ocupan '/', necesita formular sus consultas de manera muy específica para evitar la descarga de carpetas enteras.

Marcos

0

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

 
SERVER 
    |-logs 
    |-etc 
    |-cache 
    |-public_html 
     |-images 
     |-videos (want to exclude) 
     |-files 
     |-audio (want to exclude) 

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