¿Es posible extraer mediante programación un solo archivo de un archivo .tar.gz de tamaño decente sin extraer todo el archivo tar en el disco? Básicamente, necesito ingresar archivos grandes de tar.gz a través de la red y extraer 1 pequeño archivo de texto. Parece algo exagerado extraer y extraer el tarball en el disco, luego sacar el archivo y luego eliminar todo lo demás. También voy a hacer esto de forma recursiva (por ejemplo, dependencias de paquetes, cada archivo de texto apunta a más tar.gz), de modo que cuanto menos tráfico de red y ciclos de CPU me salgan con la suya, mejor.Extraiga 1 archivo de tar.gz con bash
Respuesta
Desde la página del manual, para extraer blah.txt de coco.tar.gz:
tar -xzf foo.tar.gz blah.txt
(y esto va en superusuario, por supuesto, pero bueno, respuestas rápidas son también muy bueno.)
¿Funcionará esto si el archivo está ubicado en un subdirectorio dentro de la estructura tar.gz? – tj111
Con las versiones modernas de GNU tar, no tiene que especificar la opción 'z' en extraer; deduce eso (y de manera similar con la opción 'j' para archivos comprimidos bzip2). Al crear el archivo, necesitas la opción de decirle a tar qué crear, por lo que la simetría no daña en absoluto. –
@ tj111: si el nombre del archivo en el archivo tar es 'xyz/pqr/abc.txt', eso es lo que especifique en la línea de comando. También puede usar metacaracteres de estilo shell: 'xyz/pqr/*' extraerá todos los archivos de todos los subdirectorios bajo 'xyz/pqr'. Solo desconfíe de si el caparazón expande el '*' por usted: utilice comillas para evitar que lo haga. –
Me hago eco de la respuesta de Jefromi, con la adición de incluir la ruta al archivo si tiene directorios en el archivo tar (esto puede parecer obvio para algunos, pero inicialmente no me resultó claro cómo especificar la estructura del directorio).
Por ejemplo, si usted hizo el tar en el directorio src /, y blah.txt estaba en release1/shared /, volvería al directorio src/(si lo quiere desmarcar en el mismo lugar)
tar -xzf tar.gz release1/shared/blah.txt
Si no recuerda la estructura de directorios del archivo tar (soy un poco desorganizado y, a veces olvido donde hice el alquitrán), siempre se puede
tar -tzf tar.gz
para ver el contenido , cancelar (Ctrl + C) una vez que tenga una idea de la estructura de su directorio.
Gracias por esto. Aunque parece que necesita un '. /' Delante de los directorios por el motivo que sea para escanearlos. p.ej. 'tar -xzf tar.gz./release1/shared/blah.txt' – tj111
- 1. Extraiga archivos del archivo ZIP con VBScript
- 2. Nombre de archivo no imprimir correctamente con subrayado "_" en bash
- 3. Excluyendo directorio al crear un archivo .tar.gz
- 4. ¿Cómo puedo leer un archivo .tar.gz con PHP?
- 5. abriendo un archivo .tar.gz con un solo comando
- 6. Crear archivo zip o tar.gz sin ejecutivo
- 7. ¿Usa el archivo tar.gz como una carpeta?
- 8. descomprimir un archivo tar.gz en R?
- 9. ¿Cómo crear el archivo de archivo tar.gz en Windows?
- 10. bash "&" without printing "[1] + Listo"
- 11. GUNZIP/Extraiga el archivo "parte por parte"
- 12. Extraer un archivo de tar.gz, sin tocar el disco
- 13. extraiga y reemplace el archivo que existe
- 14. Extraiga lang value con JavaScript
- 15. Probar una fecha de archivo con bash
- 16. BASH: diferencia entre "exportación k = 1" frente a "k = 1"
- 17. Instalando java - ¿Debería usar el archivo .rpm o .tar.gz?
- 18. ¿Qué significa "$ 1/*" en "para archivo en $ 1/*"
- 19. ¿Son tar.gz y tgz lo mismo?
- 20. Extraiga un rango de NSArray
- 21. Extraiga el icono del archivo .lnk (acceso directo) de Windows
- 22. Extraiga el hash SHA1 de un archivo torrent
- 23. reemplazar un archivo entero con otro archivo en bash
- 24. Extraiga la tabla de DOCX
- 25. utiliza una ruta relativa en requirements.txt para instalar un archivo tar.gz con pip
- 26. ¿Cómo creo un archivo .tar.gz adecuado para usar con `cabal upload?
- 27. ¿Cómo comprobar si un archivo .tar.gz de Unix es un archivo válido sin descomprimir?
- 28. Extraiga bibliotecas vinculadas estáticamente desde un archivo ejecutable
- 29. crear archivo binario en bash
- 30. Bash: encontrar el archivo con las líneas max contar
Nah, está relacionado con bash. Y bash está programando (tipo de). –
@Matt Joiner: No está relacionado realmente con bash. Es una pregunta de uso para una utilidad de sistema común que puede invocarse desde cualquier shell, no solo bash. Pero sí, la programación en bash es de hecho programa, a pesar de lo que puede haber escuchado a veces aquí. – Cascabel
Sí, pensé en SU, pero está dentro de un script de bash relativamente complejo, y va a ser ejecutado a través de una máquina, no por un usuario, así que pensé que era un poco más que SU. – tj111