Esto no funciona
tar xf /tmp/foo.tar.gz foo/bar
tar: foo/bar: Not found in archive
No es obvio para mí qué haría esto más allá de extraerlo en su lugar y mover los archivos.
De man tar
:
-C directory
In c and r mode, this changes the directory before adding the
following files. In x mode, change directories after opening the
archive but before extracting entries from the archive.
es decir, tar xC /foo/bar -f /tmp/foo.tar.gz
debe hacer el trabajo. (en FreeBSD, pero el tar de GNU es básicamente el mismo a este respecto, consulte "Cambio del directorio de trabajo" en su manual )
si desea extraer un archivo tar en otro lugar, simplemente cd al directorio de destino y descomprimirlo allí:
El comando que ha utilizado buscaría el archivo
foo/bar
en el archivo y lo extraería.fuente
Haciendo:
haría el trabajo
Básicamente, lo que hace es generar un nuevo shell (los paréntesis), en este subshell, cambiar el directorio
foo/bar
y luego descomprimir el archivo.Puede cambiar el
;
by a&&
para asegurarse de quecd
funciona bien.fuente
puede dar el nombre del archivo con
./file
después del archivo tar.si funciona significa que ha creado un alquitrán con
./
. use menos comando para ver el contenido de alquitrán.fuente
Me encontré con lo que parece ser un problema similar y lo resolví.
El problema estaba en la creación del archivo en lugar del archivo creado.
Al intentar tar y transferir un archivo en el directorio A, proporcioné la ruta al archivo original en el comando tar
Lo que pude hacer para resolver es
Al transferir y extraer el tarball, se crean las subdirecciones requeridas.
fuente
Cambia el directorio donde quieres extraer
si la ubicación del archivo de extracción en /u01/backup.tar entonces
Extraer de la siguiente manera:
fuente
El comando:
tar -xzvf foo.tar.gz -C /home/user/bar/
extraerá el archivo de entrada "foo.tar.gz" en el directorio
/home/user/bar
, mientras imprime los archivos procesados.fuente