Lzip guida rapida parte 1
lzip viene invocato in questo modo:
zip [options] [files]
Se non viene specificato alcun nome di file, lzip comprime (o decomprime) da dall'input standard all'output standard. Un trattino ' – ' utilizzato come file argomento significa input standard. Può essere mescolato con altri file ed è letto solo una volta, la prima volta che appare nella riga di comando. Ricordati di anteporre ./ a qualsiasi nome di file che inizia con un trattino oppure utilizzare ' – – '.
Opzioni più usate:
NB: questa è una lista parziale, per avere la lista estesa di tutte le opzioni disponibile fare riferimento all'help del programma o al manuale.
opzione | significato |
---|---|
-h (--help) | Stampa a video l'aiuto (help) del programma, descrive l'utilizzo delle opzioni del programma stesso. |
-V (--version) | Stampa il numero di versione di lzip sullo standard output (video). |
-d (--decompress) | Decomprime i file specificati, e ne controlla l'integrità. |
-f (--force) | Forza la sovrascrittura dei file di output. |
-k (--keep) | Conserva (non elimina) i file di input durante la compressione o decompressione. |
-l (--list) | Stampa la dimensione non compressa, la dimensione compressa e la percentuale salvata del file file specificati. Se viene fornito più di un file, una riga finale contenente le dimensioni cumulative viene stampata. Con “-v” , il dizionario, il numero di membri e la quantità dei dati finali vengono visualizzati. Con “-vv”, aumentano le informazioni stampate. |
-m byte (--match-length=byte) | Durante la compressione, imposta la lunghezza limite della stringa di corrispondenza in byte da ricercare. I valori validi vanno da “5” a “273”. Valori più grandi solitamente danno rapporti di compressione migliori ma una compressione più lunga volte. |
-o file (--output=file) | Se “-c” non è stato specificato, scrive l'output (de)compresso nel file di uscita, creando automaticamente eventuali directory principali mancanti; Mantiene i file di input invariati. Se si comprimono più file, ogni file viene compresso indipendentemente. “-o-” è equivalente al parametro “-c”. Quando si comprime e si divide l'output in volumi, il file viene utilizzato come un prefisso e diversi file denominati “file 00001.lz”, “file 00002.lz”, ecc., vengono creati. In questo caso, un solo file input è consentito. |
-q (--quiet) | Funzionamento silenzioso. Elimina tutti i messaggi. |
-S byte (--volume-size=bytes) | Durante la compressione, con “-c” non specificato, divide l' output compresso in diversi file di volume con nome tipo: “nomeoriginale00001.lz”, “nomeoriginale00002.lz”, ecc... e imposta il file limite della dimensione del volume in byte . I file di input vengono mantenuti invariati. Ogni volume è un file lzip completo, forse multi-membro. Una piccola dimensione del volume può degradare il rapporto di compressione, quindi usalo solo quando necessario. |
-s byte (--dictionary-size=bytes) | Durante la compressione, imposta il limite della dimensione massima del dizionario in byte. Lzip utilizza per ciascun file in input, la dimensione massima del dizionario impostato, solo se questo valore non supera la dimensione del file di input. In parole semplici il valore del dizionario utilizzato sarà sempre inferiore alla grandezza del file da comprimere. lzip utilizzerà in automatico un valore di dizionario più basso, rispetto al valore massimo impostato nel caso in cui tale valore impostato risulti in conflitto con la dimensione del file di input. I valori validi vanno da 4 KB a 512 MB. I valori da 12 a 29 vengono interpretati come potenze di due, ovvero da 2^12 a 2^29 byte. Le dimensioni del dizionario sono quantizzate in modo che possano essere codificate in un solo byte (vedi coded-dict-size). Se la dimensione specificata non corrisponde a una delle dimensioni valide, viene arrotondata per eccesso sommandola a (byte / 8). |
-t (--test) | Controlla l'integrità dei file specificati. “--test” esegue una decompressione di prova e cancella il risultato della decompressione. Usalo insieme a “-v” per visualizzare le informazioni sui file. |
-v (--verbose) | Durante la compressione, mostra il rapporto di compressione e la dimensione per ciascun file elaborato. Durante la decompressione o il test, ulteriori -v (fino a 4) aumentano il livello di verbosità, mostrando lo stato, il rapporto di compressione, la dimensione del dizionario, il contenuto del trailer (CRC, dimensione dei dati, dimensione del membro) e fino a 6 byte di dati finali (se presenti) sia in formato esadecimale che come stringa di caratteri ASCII stampabili. Due o più “-v” mostrano l'avanzamento della (de)compressione. |
-0 .. -9 | Livello di compressione. Imposta i parametri di compressione (dimensione del dizionario e limite di durata della corrispondenza) come mostrato nella tabella seguente. Nella compressione predefinita il livello è -6 , equivalente a (-s8MiB -m36) . Notare che -9 può essere molto più lento di -0 . Queste opzioni non hanno effetto durante la decompressione, il test o l'elencazione. Lo spazio dei parametri bidimensionali di LZMA non può essere mappato su una scala lineare ottimale per tutti i file. Se i tuoi file sono grandi, molto ripetitivi, ecc., potrebbe essere necessario utilizzare le opzioni dimensione dizionario (-s) e lunghezza stringa di corrispondenza (-m) direttamente per ottenere prestazioni ottimali. Se imposti diversi livelli di compressione, viene utilizzata l'ultima impostazione. Per esempio -9 -s64MiB È equivalente a -s64MiB -m273 |
Lzip: livello di compressione
Lzip, come accennato nella precedente tabella delle opzioni, utilizza dei livelli di compressione prestabiliti a priori, vediamo nella tabella riportata qua in basso, la specifica di questi pre-set.
Livello | Dimensione del dizionario (-s) | Limite stringa di corrispondenza (-m) |
---|---|---|
-0 | 64 KiB | 16 byte |
-1 | 1 MB | 5 byte |
-2 | 1,5 MB | 6 byte |
-3 | 2 MB | 8 byte |
-4 | 3 MB | 12 byte |
-5 | 4 MB | 20 byte |
-6 | 8 MB | 36 byte |
-7 | 16 MB | 68 byte |
-8 | 24 MB | 132 byte |
-9 | 32 MB | 273 byte |
(--fast) e (--best)
Sono alias di (-0) e (-9), sono comandi introdotti per avere una sintassi simile a GNU gzip.
Lzip: esempi di utilizzo generico
Archiviare un file, sostituendolo con una versione compressa:
lzip path/file
Archiviare un file, mantenendo il file di input:
lzip -k path/file
Archiviare un file con la migliore compressione (livello=9) (compressione lenta) :
lzip --best path/file
Archivia un file alla massima velocità (livello=0):
lzip --fast path/file
Archivia un file con buona velocità con compressione di livello 4 (dizionario da 3MB):
lzip -4 path/file
Archivia un file (più lento) con maggiore compressione, livello 7 (dizionario da 16MB):
lzip -7 path/file
Testare l'integrità del file compresso:
lzip --test path/archive.lz
Decomprimere un file, sostituendolo con la versione originale non compressa:
lzip -d path/archive.lz
Decomprimere un file, mantenendo l'archivio:
lzip -d -k path/archive.lz
Elenca i file che si trovano in un archivio e mostra le statistiche di compressione:
lzip --list path/archive.lz
NB: il “path” è il percorso (albero delle cartelle dove è contenuto il file), se il nostro terminale è nello stesso “path” dei file da processare, possiamo omettere il “path” dei file da processare quando invochiamo lzip.
Facciamo un esempio pratico:
Supponiamo che nel computer ho la cartella “documenti” contenente vari file di testo, dentro questa cartella voglio comprimere il file “esempio.txt”. Ho due strade:
1) apro un terminale in quella cartella (in quel percorso) in questo caso il comando sarà:
lzip -k esempio.txt
2) ho un terminale in un “path” diverso da “documenti” quindi devo indicare a lzip dove si trovi il file, ad esempio:
lzip -k home/documenti/esempio.txt
questo è in sostanza il riferimento che ho utilizzato negli esempi qui sopra.
Come comprimere directory
Come accennato precedentemente lzip opera unicamente su un singolo file per volta, quindi in parole spicce è impossibilitato a comprimere intere directory di file in un unico file compresso, per fare ciò si usa prima archiviare con tar la directory/cartella da comprimere, per poi comprimerla in un secondo momento con lzip.
lzip archivio.tar
avremo un file chiamato:
archivio.tar.lz
questo approccio potrebbe risultare scomodo (comandi archivio tar + comandi lizp), perché effettivamente andremo a scrivere una miriade di comandi, fortunatamente è possibile fare questa operazione direttamente con un unico comando tar simile a questo:
tar --lzip -cvf nome_archivio cartella_da_comprimere
le opzioni del comando tar utilizzato in precedenza hanno il seguente significato:
--lzip dice a tar che deve usare lzip per comprimere il file
c dice a tar di creare archivio di file non compresso
v modalità dettagliata, mostra quali file vengono elaborati
f l'output file
x estrae i file dall'archivio
vediamo un esempio, supponiamo che ho una cartella chiamata “documenti” contenente file vari, vorrei comprimerla con lzip in un archivio compresso tar.lz chiamato archivio_documenti:
tar --lzip -cvf archivio_documenti.tar.lz documenti
per estrarlo:
tar --lzip -xvf archivio_documenti.tar.lz
se il file presenta estensione “tar.lz” tar è in grado di riconoscerlo come “archivio compresso lzip” e si può omettere il parametro “--lzip” in fase di estrazione:
tar -xvf archivio_documenti.tar.lz
con GNU TAR è anche possibile passare parametri opzionali al “compressore”, supponiamo ad esempio di voler comprimere e archiviare la solita cartella documenti, questa volta contenente ad esempio solo file di testo semplice (hanno un alto rapporto di compressione) e di voler utilizzare un grado di compressione di lzip di tipo -7 a discapito del tempo, avremo un comando simile a questo:
tar -c -I 'lzip -7' -vf archivio_documenti.tar.lz documenti
le opzioni del comando tar utilizzato in precedenza hanno il seguente significato:
-c dice a tar di creare archivio di file non compresso
-I indica il programma di compressione e i parametri da usare
-v modalità dettagliata, mostra quali file vengono elaborati
-f l'output file
per ulteriori combinazioni di comandi fare riferimento al manuale di GNU TAR.
man tar
riferimenti e bibliografia
https://lzip.nongnu.org/manual/lzip_manual.html
https://lzip.nongnu.org/lzip_benchmark.html
https://lzip.nongnu.org/xz_inadequate.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://www.gnu.org/software/automake/manual/html_node/List-of-Automake-options.html
https://datatracker.ietf.org/doc/html/draft-diaz-lzip
https://www.nongnu.org/lzip/manual/lzip_manual.html#File-format
http://download.savannah.gnu.org/releases/lzip/
http://lists.gnu.org/mailman/listinfo/lzip-bug
altri articoli riguardanti lzip, qui su noblogo:
https://noblogo.org/fenix/lzip-questo-sconosciuto-compressore-dati
#unolinux #lzip #LZMA #compressione #compressionedati #opensurce #archivio #tutorial #guidainformatica