GNU/Linux >> Tutoriales Linux >  >> Linux

Agregar archivo a archivos tbz

Mientras tar puede agregar archivos a un archivo ya existente, no se puede comprimir. Tendrás que bunzip2 el archivo comprimido, dejando un tarball estándar. A continuación, puede utilizar tar la capacidad de agregar archivos a un archivo existente y luego volver a comprimir con bzip2 .

Del manual:

 -r      Like -c, but new entries are appended to the archive.  Note that this only
         works on uncompressed archives stored in regular files.  The -f option is
         required.

La otra respuesta es correcta:no puede actualizar correctamente un archivo tar comprimido sin descomprimirlo. La documentación tar de GNU lo insinúa y el intento de actualización falla con un mensaje de error explícito:

$ tar --concatenate --file=cat.tar.bz2 two.tar.bz2 
tar: Cannot update compressed archives
tar: Error is not recoverable: exiting now

Sin embargo, si está interesado en una solución sucia que no requiera descompresión, puedo proporcionarle una, según las siguientes observaciones:

  • Adjuntar flujos bzip2 usando cat es compatible y produce un flujo bzip2 válido (lo mismo ocurre con gzip);
  • añadiendo archivos tar usando cat no produce un archivo tar válido, por lo que --concatenate existe la opción, pero podemos pedirle a tar que simule que es válida:

Puede parecerle más intuitivo querer o intentar usar cat para concatenar dos archivos en lugar de usar el --concatenate operación; después de todo, cat es la utilidad para combinar archivos.

Sin embargo, los archivos tar incorporan un marcador de fin de archivo que debe eliminarse si los archivos concatenados se van a leer correctamente como un solo archivo. --concatenate elimina el marcador de fin de archivo del archivo de destino antes de agregar cada nuevo archivo. Si usa cat para combinar los archivos, el resultado no será un archivo de formato tar válido. Si necesita recuperar archivos de un archivo que se agregó usando la utilidad cat, use el --ignore-zeros (-i ) opción.

Con base en este conocimiento, podemos hacer, por ejemplo:

cat {one,two}.tar.bz2 >combined.tar.bz2

Esto da como resultado, como explica el fragmento de documentación anterior, un archivo tar no válido, pero usando --ignore-zeros , todavía se puede leer completo:

## Show contents of `one.tar.bz2'
$ tar tf one.tar.bz2
a
b

## Show contents of `two.tar.bz2'
$ tar tf two.tar.bz2
c

## Show contents of `combined.tar.bz2', bypassing the bad format
$ tar tif combined.tar.bz2
a
b
c

Observe cómo lo anterior enumera los tres archivos de los dos archivos originales, mientras que omite -i (correctamente) enumera solo los archivos del primer archivo original:

$ tar tf combined.tar.bz2 
a
b

Una vez más, eso no es más que un truco sucio, pero podría ser útil si controla tanto el lado de escritura como el de lectura y puede asegurarse de que -i se utilizará cuando se intente leer archivos creados de esta forma.


Linux
  1. Error de alquitrán:EOF inesperado en el archivo

  2. ¿Cómo gzip varios archivos en un archivo gz?

  3. extraer un solo archivo de un archivo tgz enorme

  4. ¿Desarchivar el archivo mientras se reduce el tamaño del archivo?

  5. Concatenar múltiples archivos tar en un solo comando

Cómo crear un archivo Tar Gz

Comando tar de Linux:cómo comprimir archivos en Linux

Cómo tar tipos de archivos específicos (extensiones) en un directorio

Comando tar de Linux para comprimir y extraer archivos

Extraiga el archivo tar.gz en Linux

Extraiga archivos específicos en un archivo tar usando un comodín