¿Puedo extraer una carpeta específica usando tar a otra carpeta?


14

Soy nuevo en el mundo de Linux y parece que me he topado con un obstáculo. Sé que puedo extraer un archivo específico usando el comando, tar xvfz archivename.tar.gz sampledir/sin embargo, ¿cómo puedo extraer sampledir/en testdir/lugar de la ruta en la que está el archivo, por ejemplo, el archivo está en la ruta /tmp/archivename.tar.gzy me gustaría extraer sampledira testdircuál está en la ruta /tmp/testdir.

Respuestas:


19

Lo que estás buscando es la -Copción:

$ man tar
<snip>

-C, --directory DIR
       change to directory DIR

Uso, según su ejemplo:

$ tar xvzf archivename.tar.gz -C /tmp/testdir/ sampledir/

Además, puede interesarle saber que las versiones modernas de tarno requieren el zindicador para descomprimir archivos comprimidos; Se darán cuenta de que es una .gzy hacer lo correcto automáticamente.


Gracias. Curiosamente lo intenté antes de publicar la pregunta y falló. Tal vez me perdí una opción. Lo intentaré de nuevo.
PeanutsMonkey

Brillantez. Siempre me olvido de esto para archivos grandes.
zmonteca

3

No necesitas jugar juegos locos sin desmarcar todo. Tar solo admite la extracción de un subconjunto de archivos en un archivo, como se muestra en el siguiente ejemplo (trivial):

/tmp $ mkdir tarsrc
/tmp $ cd tarsrc
/tmp/tarsrc $ mkdir a b
/tmp/tarsrc $ touch a/aaa b/bbb
/tmp/tarsrc $ tar cf ../tartest.tar .
/tmp/tarsrc $ cd ..
/tmp $ mkdir tardest
/tmp $ cd tardest
/tmp/tardest $ tar xf ../tartest.tar ./a    
/tmp/tardest $ ls -R
.:
a/

./a:
aaa

El truco es que la especificación de ruta debe coincidir exactamente con el contenido del archivo tar. Entonces, cuando haces un tar tf, si el camino comienza ./, tienes que ponerlo, y si no lo tiene, debes dejarlo afuera. Además, si desea extraer una ruta sub-sub-sub-sub-sub-sub-sub-ruta, terminará N niveles profundos en el sistema de archivos cuando haya terminado.


Gracias womble Tal vez no sea el ejemplo correcto para usar, pero estoy comparando tar con Winzip, WinRAR, etc. y posiblemente tar es el comando incorrecto que se debe usar, sin embargo, dado que he visto ejemplos de tar desarchivar archivos gzip y bzip, esperaba poder aplique un proceso similar, por ejemplo, seleccione el archivo que desea desarchivar (tar lo hace) y seleccione la ruta a la que desea extraer (tar no hace esto a menos que esté en el directorio específico).
PeanutsMonkey

Desea la -Copción de alquitrán, entonces.
womble
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.