Estoy usando este comando en un 5GB archive
tar -zxvf archive.tar.gz /folder/in/archive
¿Es esta la forma correcta de hacer esto? Parece estar tardando una eternidad sin salida de línea de comando …
Comentarios
Responder
tar
almacena rutas relativas de forma predeterminada . GNU tar incluso lo dice si intenta 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 «s en el archivo tar:
tar -tvf foo.tar
Y anote el nombre exacto del archivo. En el caso de mi archivo foo.tar
, podría extrae /home/foo/bar
diciendo:
tar -xvf foo.tar home/foo/bar # Note: no leading slash
Así que no, la forma en que publicaste no es (necesariamente) la correcta manera de hacerlo. Tienes que omitir la barra inclinada inicial. Si desea simular rutas absolutas, haga 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 por las que tar
convierte rutas en rutas relativas. Una es la capacidad de restaurar un archivo en lugares distintos a su fuente original. otra es la seguridad. Puede extraer un archivo, esperar que sus archivos aparezcan en su directorio de trabajo actual y, en su lugar, sobrescribir los archivos del sistema (o su propio trabajo) en otro lugar por error.
Nota: si usa el -P
opción, tar
será archivar rutas absolutas. Por lo tanto, siempre vale la pena comprobar el contenido de archivos grandes antes de extraerlos.
Comentarios
-
--strip-components=N
puede ser útil para algunos aquí. - en mi caso, fue necesario escribir
./foldername/
en lugar de , supongo que fue porque cuando creé el tar lo creé contar -cvf santi.tar ./*
y cuando " enumerado " el tar esto es lo que decíadrwxr-xr-x santi/santi 0 2016-04-11 09:42 ./foldername/
- Y sobre
.gz
? - @PeterKrauss cambia
-xvf
a-xzvf
(agregando el-z
) y obviamentefoo.tar
afoo.tar.gz
o como se llame su archivo. Lo mismo ocurre con-j
(bz2) y en algunas versiones recientes,-J
(xz). De lo contrario, una canalización comozcat foo.tar.gz | tar -xvf - …
también funciona. - Y recuerde, si está cansado de toda la salida detallada durante la extracción, omita
v
en todos los ejemplos. Por ejemplo,tar -tf foo.tar
ytar -xf foo.tar ...
.
tar
concat /proc/$(pidof tar)/fdinfo/0
(adapte el comando si tiene más de untar
proceso en ejecución).folder/folder2/
ganó ' t funcionar.