Respuestas:
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 )
Haciendo:
(cd foo/bar ; tar xf /tmp/foo.tar.gz )
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 que cd
funciona bien.
tar -xf ancd.tar.gz my/name/file
puede dar el nombre del archivo con ./file
después del archivo tar.
tar -xf ancd.tar.gz ./my/name/file
si funciona significa que ha creado un alquitrán con ./
. use menos comando para ver el contenido de alquitrán.
less ...tar.file
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
tar -cvf MyFile.tar /foo/bar/dir/not/needed/path/*
Lo que pude hacer para resolver es
cd /foo/bar/dir/not/needed/
tar -cvf /tmp/MyFile.tar path*
Al transferir y extraer el tarball, se crean las subdirecciones requeridas.
tar -xvf MyFile.tar