¿Cómo se extrae una sola carpeta de un archivo tar.gz grande?

¿Cómo se extrae una sola carpeta de un archivo tar.gz grande?

Estoy usando este comando en un5GBarchivo

tar -zxvf archive.tar.gz /folder/in/archive

¿Es esta la forma correcta de hacer esto? Parece que está tardando una eternidad sin salida de línea de comando...

Respuesta1

taralmacena rutas relativaspor defecto. GNU tar incluso lo dice si intentas almacenar una ruta absoluta:

tar -cf foo.tar /home/foo
tar: Removing leading `/' from member names

Si necesita extraer una carpeta en particular, eche un vistazo a lo que hay en el archivo tar:

tar -tvf foo.tar

Y tenga en cuenta el nombre de archivo exacto. En el caso de mi foo.tararchivo, podría extraerlo /home/foo/bardiciendo:

tar -xvf foo.tar home/foo/bar # Note: no leading slash

Entonces no, la forma en que publicaste no es (necesariamente) la forma correcta de hacerlo. Tienes que omitir la barra diagonal inicial. Si desea simular rutas absolutas, hágalo cd /primero y asegúrese de ser el superusuario. Además, esto hace lo mismo:

tar -C / -xvf foo.tar home/foo/bar # -C is the ‘change directory’ option

Hay buenas razones muy obvias para tarconvertir rutas en relativas. Una es la capacidad de restaurar un archivo en lugares distintos a su fuente original. La otra es la seguridad. Podrías extraer un archivo, esperar que sus archivos aparezcan en tu directorio de trabajo actual y, en su lugar, sobrescribir los archivos del sistema (o tu propio trabajo) en otro lugar por error.

Nota: si utiliza la -Popción,tar voluntadarchivar rutas absolutas. Por lo tanto, siempre vale la pena verificar el contenido de archivos grandes antes de extraerlos.

información relacionada