Wget no crea el archivo de índice del directorio

Wget no crea el archivo de índice del directorio

Estoy intentando descargar el sitio con el comando:

wget -r -l 0 -p -k -m -e robots=off --restrict-file-names=nocontrol,unix http://example.com

Cuando encuentra el enlace, por ejemplo, http://example.com/directioncrea un archivo en el disco../example.com/direction

Luego, por ejemplo, encuentra otros archivos (enlaces) en la 'dirección', supongamoshttp://example.com/direction/11

Y wgetreescriba el archivo antiguo ./example.com/directioncon algo de HTML y transfórmelo en el directorio. Y escribe un nuevo archivo ./example.com/direction/11allí.

Si encuentra un nuevo archivo dentro /direction/11, también lo reescribirá 11y lo convertirá al directorio.

Parece que he perdido todos los archivos de índice del directorio.

¿Existe una solución para el problema en el propio wget?

Respuesta1

Puede que esto no funcione en todos los casos, pero pude resolver este problema usando una etiqueta algo inesperada.

Del manual de wget 1.17.1:

‘-E’

‘--adjust-extension’

Si se descarga un archivo de tipo ‘application/xhtml+xml’o ‘text/html’y la URL no termina con la expresión regular ‘\.[Hh][Tt][Mm][Ll]?’, esta opción hará que ‘.html’se agregue el sufijo al nombre del archivo local.

Por lo tanto, en su caso, cuando wget encuentre el enlace http://example.com/direction, comprobará si la página tiene formato html. Si es así, lo guardará en el disco local como /example.com/direction.html. Luego, cuando vea http://example.com/direction/11, lo guardará en el disco como /example.com/direction/11, por lo que no sobrescribirá el primer archivo. Suponiendo que la verdadera estructura del directorio sea /example.com/direction/index.html, no coincidirá exactamente con la estructura del directorio remoto, pero al menos no sobrescribirá archivos incorrectamente.

Respuesta2

Bueno, una solución a este problema utilizando sólo Wget es casi imposible. Primero déjame intentar explicarte el problema.

Primero Wget intenta descargar http://site.com/direction. Cuando Wget envía una solicitud para esta ruta, el servidor responde con los datos disponibles en formato http://site/com/example/index.html. Sin embargo, en este punto, Wget no sabe que los datos que se le envían corresponden a la ruta: ejemplo/index.html. Ahora, cuando Wget encuentra otro archivo, http://site.com/example/11vuelve a suceder lo mismo. Sin embargo, primero debe crear el directorio ejemplo/ y para ello elimina incondicionalmente el archivo antiguo. En mi opinión, Wget debería detectar si está reemplazando un archivo con un directorio y guardar el archivo como un archivo de índice. Pero por ahora no es así.

información relacionada