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.gzdebe 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/baren 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/bary luego descomprimir el archivo.Puede cambiar el
;by a&¶ asegurarse de quecdfunciona bien.fuente
puede dar el nombre del archivo con
./filedespué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