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:
- Gli archivi solidi non possono essere creati né decodificati in parallelo.
- Per implementare un archiviatore e compressore parallelo (multi-thread) è necessario che esso funzioni tramite blocchi di dati.
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.
file tar allineato
+========+======+=================+===============+========+======+========+
| header | data | extended header | extended data | header | data | EOA |
+========+======+=================+===============+========+======+========+
tar.lz allineato multimembro
+===============+=================================================+========+
| member | member | member |
+===============+=================================================+========+
ogni membro lzip ha la seguente struttura:
+--+--+--+--+----+----+=============+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| ID string | VN | DS | LZMA stream | CRC32 | Data size | Member size |
+--+--+--+--+----+----+=============+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
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:
- per file (--no-solid),
- per blocco (--bsolid, predefinito),
- per directory (--dsolid),
- solid appendibile (--asolid)
- solid (--solid).
- Può anche creare archivi tar non compressi.
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:
- L'archivio tar.lz multimembro risultante può essere decompresso parallelamente, moltiplicando la velocità di decompressione.
- Nuovi membri possono essere aggiunti all'archivio (rimuovendo il membro di fine archivio) e i membri indesiderati possono essere eliminati dall'archivio. Proprio come un archivio tar non compresso.
- È un formato di backup sicuro in stile POSIX. In caso di corruzione, tarlz può estrarre tutti i membri non danneggiati dall'archivio tar.lz, saltando i membri danneggiati, proprio come il tar standard (non compresso). Inoltre, l'opzione '—keep-damaged' può essere usata per recuperare quanti più dati possibili da ogni membro danneggiato, e lziprecover può essere usata per recuperare alcuni dei membri danneggiati.
Uso di tarlz
tarlz si invoca in questo modo:
tarlz [options] [files]
le opzioni sono le seguenti:
OPTIONS
--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, --extract
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=<owner>
use <owner> name/ID for files added
--group=<group>
use <group> 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=<n>
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
lzip.nongnu.org/manual/lzip_ma…
lzip.nongnu.org/lziprecover.ht…
altri articoli riguardanti lzip, qui su noblogo:
noblogo.org/fenix/lzip-questo-…
noblogo.org/fenix/lzip-guida-r…
#unolinux #lzip #LZMA #tarlz #compressione #compressionedati #opensurce #archivio #tutorial #guidainformatica #linux