Como puedo descargar una carpeta de un tar

Iniciado por Pedro122h, 29 Abril 2021, 17:23 PM

0 Miembros y 1 Visitante están viendo este tema.

Pedro122h

Hola tengo la duda de como puedo descargar una carpeta de un archivo .tar que esta alojado en archive.org,el sitio permite descargar los archivos individualmente pero esto es demasiado demorado y poco eficiente, esta es la url del .tar:
https://ia803104.us.archive.org/view_archive.php?archive=/30/items/termux-repositories-legacy/termux-repositories-legacy-24.12.2019.tar
La carpeta que necesito es esta
termux-repositories-legacy/webroot/x11-packages-21/

Serapis

#1
En la página que abres, solo deja descargar uno a uno cada elemento... como son chorrocientos, sería además de lento demasiado 'interactivo' y lo más probable es que no te quede adecuadamente organizada la descarga...

Te recomiendo mejor que abras la página del tar, y ahí elijas descargar el archivo (que son unos 7Gb.) luego ya en tu equipo extraes la carpeta deseada con todo el contenido bajo la misma. Y al final si no necesitas más el tar, lo emilinas y listo. Según la velocidad  a la que descargues así tardará, probablemente unas horas... pero al menos solo le dedicas un par de clicks, hasta que se descargue. Paciencia.

https://archive.org/details/termux-repositories-legacy  (despliega 'Tar' a la derecha, es el último de los 4 ficheros)

o pinchando en 'Show all files' en la parte alta al centro, llegas aquí:
https://archive.org/download/termux-repositories-legacy

Pedro122h

Espera una manera de no descargar las 7 gb pero creo que es la unica manera

Danielㅤ

Cita de: Pedro122h en 30 Abril 2021, 04:12 AM
Espera una manera de no descargar las 7 gb pero creo que es la unica manera


No, no es la única manera, con un pequeño script podes lograr lo que quieres.


Saludos
¡Regresando como cual Fenix! ~
Bomber Code © 2021 https://www.bombercode.net/foro/

Ayudas - Aportes - Tutoriales - Y mucho mas!!!

WHK

Cita de: [D]aniel en 30 Abril 2021, 04:53 AM
No, no es la única manera, con un pequeño script podes lograr lo que quieres.

Creo que con curl y gz se puede pero necesitarías ubicar la posición de los bytes del directorio que necesitas extraer y enviar la solicitud http indicando el rango de bytes que se necesitan, por ejemplo, puede que la carpeta que necesite se encuentre al final del archivo. Creo que interpretando los primeros bytes del archivo es posible obtener la posición del directorio pero no estoy seguro, porque de otra manera terminarías descargando todo el archivo solo para saber donde está el directorio que necesitas.

No se ve tan simple. Firefox por ejemplo usa el schema "jar" para navegar entre los archivos de un comprimido con formato zip pero para lograr esto necesita descargar el archivo completo.

Danielㅤ

#5
Lo que vos necesitas yo lo haría de la siguiente manera:

1. Creo un script en Python que haga el trabajo.

2. El script primero guardaría en una variable todo el contenido (código fuente/HTML) de la página web https://ia803104.us.archive.org/view_archive.php?archive=/30/items/termux-repositories-legacy/termux-repositories-legacy-24.12.2019.tar

3. Si entramos en la página y miramos el código fuente notaremos ésto:



Y si entramos moralmente y buscamos por termux-repositories-legacy/webroot/x11-packages-21/ veremos toda la cantidad de archivos a descargar



Entonces haría un split() con éste dato mostrado en el código fuente y se crearía una lista (tipo de variable):

<tr><td><a href="//archive.org/download/termux-repositories-legacy/termux-repositories-legacy-24.12.2019.tar/termux-repositories-legacy%2Fwebroot%2Fx11-packages-21

Me basaría en eso para descargar lo que necesito.

4. Haría un bucle for de esa lista del paso 3 y así obtendría la URL directa, como la cadena del paso 3 sería la divisora del contenido no va a mostrarse la URL completa por lo que la agregaría yo antes para ir formarla completa.

5. Cada vez que guarde la variable con la URL directa para descargar cada archivo, llamaría a una función pasándole como parámetro esa URL:

Código (Python) [Seleccionar]
descargarArchivo(url)

6. La función descargarArchivo() descargaria todos los archivos que reciba y los guardaría en un directorio antes especificado en el código fuente del script.

7. El programa sería por consola y mostraría por pantalla la cantidad de archivos que va descargando en tiempo real, así podría saber cuánto falta para que termine, ya que en el punto 3 pude saber que la cantidad total de archivos a descargar es 1116.


Saludos
¡Regresando como cual Fenix! ~
Bomber Code © 2021 https://www.bombercode.net/foro/

Ayudas - Aportes - Tutoriales - Y mucho mas!!!

Serapis

Cita de: Serapis en 29 Abril 2021, 18:05 PM
En la página que abres, solo deja descargar uno a uno cada elemento...
Te recomiendo mejor ... descargar el archivo (que son unos 7Gb.)...
Me reitero... Pulsa dos clicks y dedícate a otra cosa (hasta que se descargue, si lo hubieras puesto ayer, ya lo habrías descargado 3 o 4 veces).

Pero sí, puedes perder el tiempo en hacer un script, tardarás no menos que poner a descargar cada enlace individual y luego asegurarse que esté todo adecuadamente ordenado y no haber olvidado ninguno o sobrescrito accidentalmente otro.
Cada uno pierde el tiempo como prefiere, ahí no se puede decir más.

EdePC

Por desgracia las descargas desde web.archive son bastante lentas, sin embargo yo en estos casos siempre primero lo pongo a descargar y mientras tanto investigo la manera de automatizarlo por si me sirve para otra cosa similar.

Sería sencillo con wget pero el problema es la estructura de carpetas y los nombres de archivos ya que se tienen que parsear primero. Quizá lanzar un wget con parámetros para que sea recursivo y con otros parámetros para que solo descargue la carpeta requerida.

Se ve interesante, cuando tenga tiempo y buena internet voy a probarlo.