LZIP GUIDA RAPIDA PARTE 2

Tarlz è un'implementazione parallela (multi-thread) e multi-membro (multi-blocco) dell'archiviatore tar e del compressore lzip . Tarlz usa la libreria di compressione lzlib .

Tarlz crea archivi tar utilizzando una variante semplificata e più sicura del formato POSIX PAX con compressione in formato lzip, mantenendo l'allineamento tra i membri tar e i membri lzip.

L'archivio tar.lz multimembro risultante è retrocompatibile con gli strumenti tar standard come GNU tar, che lo trattano come qualsiasi altro archivio tar.lz solido, GNU Tar lo decomprimerà in maniera sequenziale.

Tarlz può aggiungere file alla fine di tali archivi compressi.

Note di funzionamento di tarlz

Introduciamo due postulati fondamentali:

struttura di un file tar allineato con lzip

Tarlz non processa il file in ingresso come “intero” (in maniera sequenziale), ma l'intero file di ingresso, sarà diviso in “N” blocchi o porzioni di dati, in modo tale che, il processore multi core della macchina, possa processare più blocchi contemporaneamente e parallelamente; ogni core processerà indipendentemente dagli altri, i blocchi a lui assegnati, diminuendo in questo modo il tempo computazionale dell'operazione, rispetto ad un approccio sequenziale e solido.

Nello specifico, tarlz costruisce un archivio Tar multi-membro e lo allinea in input a lzip, che a sua volta, costruisce un file compresso multi-membro allineato con il Tar di partenza.


Mantenere l'allineamento tra i membri tar e i membri lzip ha due vantaggi. Aggiunge un livello lzip indicizzato sopra l'archivio tar, rendendo possibile la decodifica dell'archivio in modo sicuro in parallelo. Inoltre riduce al minimo la quantità di dati persi in caso di danneggiamento. L'accesso ai dati è più veloce.

Questa accortezza , comporta maggior robustezza in caso di corruzione dell'archivio, buona parte dell'archivio può essere recuperata, l'accesso non sequenziale a porzioni specifiche di dati interessa solo il blocco corrispondente in archivio e la sua eventuale decompressione.

Tarlz può creare archivi tar con cinque livelli di granularità di compressione:

Naturalmente, comprimendo ogni file (o ogni directory) individualmente non si può raggiungere un rapporto di compressione elevato quanto quello ottenuto comprimendo in modo uniforme l'intero archivio tar, ma si ottengono i seguenti vantaggi:


Uso di tarlz

tarlz si invoca in questo modo:

tarlz [options] [files]

le opzioni sono le seguenti:

OPTIONS: DESCRIPTION:
--help display this help and exit
-V, --version output version information and exit
-A, --concatenate append archives to the end of an archive
-B, --data-size=<bytes> set target size of input data blocks [2x8=16 MiB]
-c, --create create a new archive
-C, --directory=<dir> change to directory <dir>
-d, --diff find differences between archive and file system
--ignore-ids ignore differences in owner and group IDs
--delete delete files/directories from an archive
--exclude=<pattern> exclude files matching a shell pattern
-f, --file=<archive> use archive file <archive>
-h, --dereference follow symlinks; archive the files they point to
n, --threads=<n> set number of (de)compression threads [2]
-q, --quiet suppress all messages
-r, --append append files to the end of an archive
-t, --list list the contents of an archive
-v, --verbose verbosely list files processed
-x, --extrac extract files/directories from an archive
-0 .. -9 set compression level [default 6]
--uncompressed don't compress the archive created
--asolid create solidly compressed appendable archive
--bsolid create per block compressed archive (default)
--dsolid create per directory compressed archive
--no-solid create per file compressed archive
--solid create solidly compressed archive
--anonymous equivalent to '—owner=root —group=root'
--owner= use name/ID for files added
--group= use name/ID for files added
--keep-damaged don't delete partially extracted files
--missing-crc exit with error status if missing extended CRC
--out-slots= number of 1 MiB output packets buffered [64]

Exit status: 0 for a normal exit, 1 for environmental problems (file not found, invalid flags, I/O errors, etc), 2 to indicate a corrupt or invalid input file, 3 for an internal consistency error (eg, bug) which caused tarlz to panic.


Alcuni esempi di tarlz

Esempio 1: crea un archivio compresso multiplo:

Archive.tar.lz contenente file A ,B ,C.

tarlz -cf archive.tar.lz a b c

Esempio 2: Incorpora il file “d” e il file “e” alla fine dell'archivio multi-membro “Archive.tar.lz” .

tarlz -rf archive.tar.lz d e

Esempio 3: creare un archivio (solid appendibile) Archive.tar.lz contenente i file a,b,C . Quindi aggiungi i file “d” ed “e” alla fine dell'archivio.

tarlz --asolid -cf archive.tar.lz a b c
tarlz --asolid -rf archive.tar.lz d e

Esempio 4: creare un archivio (solid appendibile) contenente le directory “dir1”, “dir2”, “dir3” con un membro lzip separato per directory. Quindi aggiungi i file a,b,c,d,e all'archivio, tutti contenuti in un unico membro lzip. L'archivio risultante Archive.tar.lz contiene 5 membri LZIP (incluso il membro di fine archivio).

tarlz --dsolid -cf archive.tar.lz dir1 dir2 dir3
tarlz --asolid -rf archive.tar.lz a b c d e

Esempio 5: creare un archivio solido “archive.tar.lz” contenente i file a,b,c. Nota bene, non si possono aggiungere altri file successivamente all'archivio.

tarlz --solid -cf archive.tar.lz a b c

Esempio 6: estrai tutti i file dall'archivio Archive.tar.lz .

tarlz -xf archive.tar.lz 

Esempio 7: estrazione dei file “a” e “c” con l'intero albero delle sotto directory “dir1” dall'archivio “Archive.tar.lz” .

tarlz -xf archive.tar.lz a c dir1

Esempio 8: copia il contenuto della directory “sourcedir” alla directory “destdir” .

tarlz -C sourcedir --uncompressed -cf - . | tarlz -C destdir -xf -

Esempio 9: comprimere l'archivio Posix esistente “Archive.tar” e scrivi l'output in “Archive.tar.lz . Comprimere ogni membro individualmente per Disponibilità massima. (Se un membro nell'archivio compresso viene danneggiato, gli altri membri possono ancora essere estratti).

tarlz -z --no-solid archive.tar

Esempio 10: comprimere l'archivio “Archive.tar” e scrivi l'output come “foo.tar.lz”.

tarlz -z -o foo.tar.lz archive.tar

Esempio 11: concatenare e comprimere due archivi “archive1.tar” e “archive2.tar” e scrivere l'output come “foo.tar.lz” .

tarlz -A archive1.tar archive2.tar | tarlz -z -o foo.tar.lz

riferimenti e bibliografia

https://lzip.nongnu.org/

https://lzip.nongnu.org/manual/lzip_manual.html

https://lzip.nongnu.org/tarlz.html

https://lzip.nongnu.org/lzlib.html

https://lzip.nongnu.org/lziprecover.html

https://www.nongnu.org/zutils/zutils.html

https://en.wikipedia.org/wiki/Lzip


https://noblogo.org/fenix/lzip-questo-sconosciuto-compressore-dati

https://noblogo.org/fenix/lzip-guida-rapida-parte-1


modificato il 29 Gennaio 2025


#unolinux #lzip #LZMA #tarlz #compressione #compressionedati #opensurce #archivio #tutorial #guidainformatica #linux