¿Qué comando necesito para descomprimir / extraer un archivo .tar.gz?

829

Recibí un gran archivo .tar.gz de un cliente que contiene aproximadamente 800 mb de archivos de imagen (cuando no está comprimido). El ftp de nuestra empresa de alojamiento es muy lento, por lo que extraer todos los archivos localmente y enviarlos a través de ftp no es práctico. Pude ftp el archivo .tar.gz a nuestro sitio de alojamiento, pero cuando ingreso a mi directorio e intento usar descomprimir, me da este error:

[esthers@clients locations]$ unzip community_images.tar.gz
Archive:  community_images.tar.gz
  End-of-central-directory signature not found.  Either this file is not a zipfile, or it constitutes one disk of a multi-part archive.  In the latter case the central directory and zipfile comment will be found on the last disk(s) of this archive.
note:  community_images.tar.gz may be a plain executable, not an archive
unzip:  cannot find zipfile directory in one of community_images.tar.gz or community_images.tar.gz.zip, and cannot find community_images.tar.gz.ZIP, period.

¿Qué comando necesito usar para extraer todos los archivos en un archivo .tar.gz?

EmmyS
fuente

Respuestas:

1389

Escriba man tarpara obtener más información, pero este comando debería hacer el truco:

tar -xvzf community_images.tar.gz

Para explicar un poco más lejos, alquitrán recogido todos los archivos en un solo paquete, community_images.tar. El programa gzip aplicó compresión, de ahí la extensión gz. Entonces el comando hace un par de cosas:

  • f: Esta debe ser la última bandera del comando, y el alquitrán f ile debe ser inmediatamente después. Le dice a tar el nombre y la ruta del archivo comprimido.
  • z: le dice a tar que descomprima el archivo usando g z ip
  • x: Tar puede recopilar archivos o correo x ellas Tracto. xhace esto último.
  • v: hace que el alquitrán hable mucho. V de salida erbose muestra todos los archivos que se extraen.
djeikyb
fuente
55
@Shiki Vi tu edición propuesta. No creo que sea un cambio apropiado, prefiero la forma en que expliqué esta herramienta. Yo no creo que su tar -xfsugerencia sería hacer una gran respuesta adicional.
djeikyb
3
Esta es una de las mejores explicaciones de los millones de preguntas formuladas de manera similar
JohnMerlino
1
@KasunSiyambalapitiya Por defecto, termina en la carpeta actual. Ver también man tar; busca la -Copción. O tal vez vea la otra respuesta 😉
djeikyb
66
Me recuerda el artículo de xckd sobre alquitrán. Tengo que volver cada vez.
mgarey
19
Mi nemotécnica para esto es: x tracto z e v *** ing f iles.
Agargara
172

Si desea que los archivos se extraigan a un destino particular, puede agregar Asegúrese de hacer primero el directorio, en este caso: ~ / Pictures / Community-C /destination/path/

Ejemplo:

mkdir ~/Pictures/Community
tar xf community_images.tar.gz -C /home/emmys/Pictures/Community/

Puede memorizar fácilmente si se tiene en cuenta diciendo tar a e X del tracto un F ile

gif del proceso realizado en la terminal

Nota: Recuerde que puede buscar dentro de las páginas man con ?+ término para buscar, y luego ny Npara ir a la instancia siguiente o anterior del término que está buscando.

JorgeArtware
fuente
55
no se olvide C para " c directorio ambiar"! Además, creo que es mejor no mezclar opciones con guiones y sin guiones (especialmente confuso cuando se usa ps).
djeikyb
2
¿Por qué no es como cualquier otro comando?
Jan M.
66
Me encanta tu pista 'alquitrán a tracto X a F ile'
Nam G VU
2
1+ para el gif animado
Nick Steele
También se puede usar --directory="/home/emmys/Pictures/Community/"(que creo que es más fácil de recordar que -C).
Patrick Dark
107

En algún momento tarse actualizó a descompresión automática. Todo lo que necesitas ahora es:

tar xf community_images.tar.gz

Se aplica la misma explicación:

  • f: Esta debe ser la última bandera del comando, y el alquitrán f ile debe ser inmediatamente después. Le dice a tar el nombre y la ruta del archivo comprimido.
  • x: e x tracto los archivos.

Tenga en cuenta la falta de guión para las banderas de comando. Esto se debe a que la mayoría de las versiones de tar permiten las opciones de estilo gnu y bsd (de manera simplista, gnu requiere un guión, bsd no).

djeikyb
fuente
1
¿Hay alguna documentación de esto? He estado buscando por todas partes una referencia a esto, nunca uso la bandera -z y todo se descomprime, así que me preocupa si no he estado comprimiendo mis tarballs, jaja. Gracias.
neurosnap
2
@neurosnap vea el manual de gnu y el manual de
bsd
3
Probablemente hubiera sido mejor editar su respuesta original.
Seth
3
@Seth se siente / se siente lo suficientemente distinto como para ser una respuesta separada, especialmente en el contexto de la edición destructiva que lo provocó. Sin embargo, lo repensaré después del trabajo, podría ser una forma más sencilla de fusionar de lo que pensé originalmente.
djeikyb
2
@EnricoMariaDeAngelis bsd tar desde al menos 2004 y gnu tar desde al menos 2010 han admitido la selección automática de un descompresor. es posible que ninguna versión "reciente" (este siglo? noventa +?) de alquitrán requiera seleccionar manualmente un descompresor.
djeikyb
11

Recordar todas las banderas tarpuede ser tedioso. Obligatorio XKCD:

ingrese la descripción de la imagen aquí

Por lo tanto, hice mi propio pequeño script en Python para hacer eso. Rápido, sucio, cpcomo en el uso:

#!/usr/bin/env python3
import tarfile,sys,os
tf = tarfile.open(name=sys.argv[1],mode='r:gz')
where = '.'
if len(sys.argv) == 3:
    where = sys.argv[2]
tf.extractall(path=where)
tf.close()

Úselo así:

myuntar.py archive.tar

Vea también un script similar para descomprimir archivos zip .

Sergiy Kolodyazhnyy
fuente
2
:) solo dos banderas de tar para recordar -cafpara crear según el nombre de archivo y -xfpara extraer (AFAIK funciona en cada tipo de tar).
Videonauth
@Videonauth Lo sé, no es tan complejo, pero por alguna razón nunca recuerdo estas opciones. Tal vez porque no trato con los archivos con la suficiente frecuencia.
Sergiy Kolodyazhnyy
¿esto solo hará archivos tar comprimidos? los documentos de la API mencionan un modo de lectura con compresión transparente; ¿se comportaría más así tar xf <file>?
djeikyb
7

Respuesta rápida:

tar -xvf  <.tar file> or <.tar.xz file>
tar -xzvf <.tar.gz file>
tar -xjvf <.tar.bz2 file>

[ NOTA ]:

  • -v Lista detallada de archivos procesados.
  • -z Filtra el archivo a través de gzip.
  • -f Utilice el archivo de almacenamiento o el ARCHIVO del dispositivo.
  • -x Extraer archivos de un archivo.
  • -j bzip2.
  • tar -xfarchive.tar # Extrae todos los archivos de archive.tar.
Benyamin Jafari
fuente
4

En caso de que no pueda extraer el .tar.gzarchivo usando

tar -xvzf fileName.tar.gz

Intenta extraer usando

tar xf fileName.tar.gz
Shravan40
fuente
44
Si se trata de un archivo tar comprimido, el primer comando siempre funcionará. Si no funciona, no tiene un archivo tar comprimido. El último comando es una gran recomendación para las personas que no les importa qué algoritmo de compresión se utilizó en su archivo tar.
djeikyb
0

También puedes hacer esto en el primer paso:

gunzip community_images.tar.gz

Luego tienes el archivo: community_images.tar

El segundo paso sería:

tar -xvf community_images.tar

Y se extraería el archivo * .tar.

dschinn1001
fuente
0

tar xvf file.tar.gz

  • x para extracto
  • v para detallado (archivos de lista)
  • f para nombre de archivo es el siguiente

Cualquier versión remotamente moderna de tar debería detectar automáticamente que el archivo está comprimido y agregarle "z".

delt
fuente