Tengo el siguiente directorio archivado:
itunes20140618.tbz
Quiero extraer un solo archivo llamado:
itunes20140618/video
¿Cómo haría esto?
Hasta ahora estoy haciendo
$ bzip2 -d /tmp/itunes20140618.tbz
Pero parece crear un directorio tar para todo. ¿Cómo puedo extraer solo el archivo de video?
Actualmente, si extraigo un archivo mediante tar, tarda aproximadamente 1 minuto y luego se "cuelga" durante otros 20 minutos mientras termina de leer el archivo tar. ¿Alguna idea de cómo mejorar esto?
Respuesta1
tar -xvjf itunes20140618.tbz itunes20140618/video
Eso debería ser suficiente para este caso, pero si necesita más ayuda, haga:
info tar
Para extraer miembros específicos del archivo, proporcione sus nombres exactos de miembros como argumentos, tal como están impresos en
--list (-t)
. Si eliminó por error uno de los archivos que había colocadocollection.tar
anteriormente en el archivo (por ejemplo,blues
), puede extraerlo del archivo sin cambiar la estructura del archivo. Su contenido será idéntico al archivo originalblues
que eliminó.Primero, asegúrese de estar en el
practice
directorio y enumere los archivos en el directorio. Ahora, elimine el archivoblues
y vuelva a enumerar los archivos en el directorio.Ahora puede extraer el miembro
blues
del archivo `collection.tar' de esta manera:
$ tar --extract --file=collection.tar blues
Si vuelve a enumerar los archivos en el directorio, verá que el archivo
blues
ha sido restaurado, con sus permisos originales, tiempos de modificación de datos y propietario. (Estos parámetros serán idénticos a los que tenía el archivo cuando lo colocó originalmente en el archivo; sin embargo, cualquier cambio que haya realizado antes de eliminar el archivo del sistema de archivos _no_ se habrá realizado en el miembro del archivo). El archivo comprimidocollection.tar
es el mismo que era antes de extraerloblues
. Puedes confirmar esto ejecutandotar
con--list (-t)
.
Respuesta2
Un archivo como .zip
, .rar
o .7z
consta de muchos archivos agrupados y comprimidos. Un .tar
archivo comprimido consta de muchos archivos agrupados, pero el formato tar no incluye ninguna compresión. Un archivo o .gz
es un único archivo comprimido. A , etc. es un archivo comprimido; es un sufijo que ocasionalmente se usa en lugar de , al igual que a veces se usa en lugar de ..bz2
.xz
.tar.gz
.tar.bz2
.tbz
.tar.bz2
.tgz
.tar.gz
bzip2 -d /tmp/itunes20140618.tbz
descomprime el archivo. Te queda el archivo tar sin comprimir. bzip2
no crea un tar: descomprime lo que se le da y, dado que se le proporciona un tar comprimido, la salida es un tar sin comprimir. Puede descomprimir el archivo resultante con tar -xf /tmp/itunes20140618.tar
. Para extraer solo un archivo, eso es tar -xf /tmp/itunes20140618.tar itunes20140618/video
.
Las versiones razonablemente recientes de tar en Linux, FreeBSD, MINIX3 y OSX detectan automáticamente archivos comprimidos, por lo que puedes llamar a tar en primer lugar sin preocuparte por la compresión utilizada en el archivo:
tar xf itunes20140618.tbz itunes20140618/video
Las versiones anteriores de tar, así como muchos sistemas actuales como OpenBSD, Solaris y Linux con BusyBox, pueden al menos llamar bzip2
de forma oculta incluso si tienes que decírselo explícitamente con la -j
opción.
tar -xjf itunes20140618.tbz itunes20140618/video