XZ(1)                              XZ Utils                              XZ(1)

NOME
       xz, unxz, xzcat, lzma, unlzma, lzcat - Comprime o decomprime file .xz e
       .lzma

SINOSSI
       xz [OPZIONE...] [FILE...]

ALIAS DEI COMANDI
       unxz e equivalente a xz --decompress.
       xzcat e equivalente a xz --decompress --stdout.
       lzma e equivalente a xz --format=lzma.
       unlzma e equivalente a xz --format=lzma --decompress.
       lzcat e equivalente a xz --format=lzma --decompress --stdout.

       Quando si scrivono script che richiedono di decomprimere file, si
       raccomanda di utilizzare sempre il comando xz con argomenti appropriati
       (xz -d o xz -dc) al posto degli alias unxz e xzcat.

DESCRIZIONE
       xz e uno strumento di compressione dati generico con sintassi della
       riga di comando simile a gzip(1)  e bzip2(1).  Il formato file nativo e
       .xz, ma sono supportati anche il formato tradizionale .lzma usato dalle
       LZMA Utils e i flussi grezzi (raw) compressi senza intestazioni di
       formato contenitore. In piu, e supportata la decompressione del formato
       .lzusato da lzip.

       xz comprime o decomprime ogni FILE a seconda della modalita di
       funzionamento selezionata. Se nessun FILE e indicato o se FILE e -, xz
       legge dallo standard input e scrive i dati processati sullo standard
       output. xz si rifiutera (stampera un errore e saltera il FILE) di
       scrivere dati compressi sullo standard output se e il terminale.
       Analogamente, xz si rifiutera di leggere dati compressi dallo standard
       input se e il terminale.

       A meno che non sia specificato --stdout, i FILE diversi da - vengono
       scritti in un nuovo file il cui nome deriva dal nome del FILE sorgente:

       o  Quando si comprime, il suffisso del file destinazione (.xz or .lzma)
          viene accodato al nome del file sorgente per ottenere il nome del
          file destinazione.

       o  Quando si decomprime, i suffissi .xz, .lzma, o .lz vengono rimossi
          dal nome del file per ottenere il nome del file destinazione. xz
          riconosce anche i suffissi .txz e .tlz, e li sostituisce con il
          suffisso .tar.

       Se il file di destinazione esiste gia, viene visualizzato un errore e
       FILE viene saltato.

       A meno che non si scriva nello standard output, xz visualizzera un
       avvertimento e saltera il FILE se si verifica una delle seguenti
       condizioni:

       o  FILE non e un file regolare. I collegamenti simbolici non vengono
          seguiti, quindi non sono considerati file regolari.

       o  FILE ha piu di un collegamento "hard".

       o  FILE ha impostati i bit setuid, setgid, o sticky.

       o  La modalita di funzionamento e impostata sulla compressione e il
          FILE ha gia un suffisso del formato di file di destinazione (.xz o
          .txz quando si comprime nel formato .xz e .lzma o .tlz quando si
          comprime nel formato .lzma).

       o  La modalita di funzionamento e impostata sulla decompressione e il
          FILE non ha un suffisso di nessuno dei formati di file supportati
          (.xz, .txz, .lzma, .tlz, o .lz).

       Dopo aver compresso o decompresso correttamente il FILE, xz copia il
       proprietario, il gruppo, le autorizzazioni, l'ora di accesso e l'ora di
       modifica dal FILE di origine al file di destinazione. Se la copia del
       gruppo fallisce, le autorizzazioni vengono modificate in modo che il
       file di destinazione non diventi accessibile agli utenti che non
       disponevano dell'autorizzazione per accedere al FILE di origine. xz non
       supporta ancora la copia di altri metadati, ad esempio elenchi di
       controllo degli accessi o attributi estesi.

       Una volta che il file di destinazione e stato chiuso con successo, il
       FILE sorgente viene rimosso, a meno che sia stato specificato --keep.
       Il FILE sorgente non viene mai rimosso se l'output e scritto sullo
       standard output, ne se si verifica un errore.

       L'invio di SIGINFO o SIGUSR1 al processo xz comporta la stampa delle
       informazioni sullo stato di avanzamento sullo standard error. Questo ha
       solo un uso limitato poiche quando lo standard error e un terminale,
       utilizzando --verbose verra visualizzato un indicatore di avanzamento
       che si aggiorna automaticamente.

   Utilizzo memoria
       L'utilizzo della memoria di xz varia da poche centinaia di kilobyte a
       diversi gigabyte a seconda delle impostazioni di compressione. Le
       impostazioni utilizzate durante la compressione di un file determinano
       i requisiti di memoria del decompressore. In genere il decompressore
       richiede dal 5 al 20 della quantita di memoria necessaria al
       compressore durante la creazione del file. Ad esempio, la
       decompressione di un file creato con xz -9 al momento richiede 65 MiB
       di memoria. Ancora, e possibile avere file .xz che richiedono diversi
       gigabyte di memoria per la decompressione.

       Soprattutto gli utenti di sistemi piu vecchi possono trovare fastidiosa
       l'eventualita di un utilizzo molto elevato di memoria. Per evitare
       spiacevoli sorprese, xz dispone di un limitatore di utilizzo della
       memoria incorporato, che e disabilitato per impostazione predefinita.
       Anche se alcuni sistemi operativi forniscono modi per limitare
       l'utilizzo della memoria dei processi, fare affidamento su questi non e
       stato ritenuto sufficientemente flessibile (ad esempio, l'uso di
       ulimit(1) per limitare la memoria virtuale tende a paralizzare
       mmap(2)).

       Il limitatore di utilizzo della memoria puo essere abilitato con
       l'opzione della riga di comando --memlimit=LIMITE. Spesso e piu
       conveniente abilitare il limitatore per impostazione predefinita
       impostando la variabile d'ambiente XZ_DEFAULTS, ad esempio,
       XZ_DEFAULTS=--memlimit=150MiB. E possibile impostare separatamente i
       limiti per la compressione e la decompressione utilizzando
       --memlimit-compress=LIMITE and --memlimit-decompress=LIMITE. L'uso di
       queste due opzioni al di fuori di XZ_DEFAULTS e raramente utile perche
       una singola esecuzione di xz non puo eseguire sia la compressione che
       la decompressione e --memlimit=LIMITE (or -M LIMITE) e piu breve da
       digitare sulla riga di comando.

       Se il limite di utilizzo della memoria specificato viene superato
       durante la decompressione, xz visualizzera un errore e la
       decompressione del file fallira. Se il limite viene superato durante la
       compressione, xz tentera di ridimensionare le impostazioni in modo che
       il limite non venga piu superato (tranne quando si usa --format=raw o
       --no-adjust). In questo modo l'operazione non fallira a meno che il
       limite sia molto basso. Il ridimensionamento delle impostazioni viene
       eseguito in piccole differenze che non corrispondono ai livelli di
       compressione preimpostati, ad esempio, se il limite e solo leggermente
       inferiore alla quantita richiesta per xz -9, le impostazioni saranno
       ridimensionate solo un poco, non proprio fino a xz -8.

   Concatenazione e padding con file .xz
       E possibile concatenare i file .xz cosi come sono. xz decomprimera tali
       file come se fossero un singolo file .xz.

       E possibile inserire un padding tra le parti concatenate o dopo
       l'ultima parte. Il padding deve essere costituito da byte "null" e la
       dimensione del padding deve essere un multiplo di quattro byte. Questo
       puo essere utile, ad esempio, se il file .xz e memorizzato su un
       supporto che misura le dimensioni dei file in blocchi di 512 byte.

       Concatenazione e padding non sono permessi con file .lzma o con flussi
       grezzi.

OPZIONI
   Suffissi interi e valori speciali
       Nella maggior parte dei casi in cui e previsto un argomento intero, e
       supportato un suffisso facoltativo per indicare facilmente numeri
       interi di grandi dimensioni. Non deve esserci alcuno spazio tra il
       numero intero e il suffisso.

       KiB    Moltiplica l'intero per 1024 (2^10).   Ki, k, kB, K, e KB sono
              accettati come sinonimi di KiB.

       MiB    Moltiplica l'intero per 1.048.576 (2^20).   Mi, m, M, e MB sono
              accettati come sinonimi di MiB.

       GiB    Moltiplica l'intero per 1.073.741.824 (2^30).   Gi, g, G, e GB
              sono accettati come sinonimi di GiB.

       Il valore speciale max puo essere utilizzato per indicare il valore
       intero massimo supportato dall'opzione.

   Modalita operativa
       Se vengono fornite piu opzioni di modalita operativa, l'ultima ha
       effetto.

       -z, --compress
              Compressione. Questa e la modalita operativa predefinita quando
              non viene specificata alcuna opzione della modalita operativa e
              non e determinata nessun'altra modalita operativa dal nome del
              comando (ad esempio, unxz implica --decompress).


              Dopo che la compressione e terminata con successo, il file
              origine viene rimosso a meno che si stia scrivendo su standard
              output o che venga specificato --keep.

       -d, --decompress, --uncompress
              Decompressione. Dopo che la decompressione e terminata con
              successo, il file origine viene rimosso a meno che si stia
              scrivendo su standard output o che venga specificato --keep.

       -t, --test
              Testa l'integrita dei FILE compressi. Questa opzione e
              equivalente a --decompress --stdout tranne per il fatto che i
              dati decompressi vengono scartati invece di essere scritti nello
              standard output. Nessun file viene creato o rimosso.

       -l, --list
              Stampa le informazioni sul FILE compresso. Non viene prodotto
              alcun output non compresso e non viene creato o rimosso alcun
              file. In modalita elenco, il programma non e in grado di leggere
              i dati compressi dallo standard input o da altre fonti che non
              permettano la ricerca.


              Il tracciato predefinito mostra le informazioni di base sui
              FILE, un file per riga. Per ottenere informazioni piu
              dettagliate, usare anche l'opzione --verbose. Per avere ancora
              piu informazioni, usare --verbose due volte, ma si noti che
              questo puo essere lento, perche ottenere tutte le informazioni
              extra richiede molte estrazioni. La larghezza dell'output
              dettagliato supera gli 80 caratteri, quindi il reindirizzamento
              dell'output, ad esempio, a less -S puo essere utile se il
              terminale non e sufficientemente ampio.


              L'output esatto puo variare tra le versioni di xz e le diverse
              impostazioni locali. Per un output leggibile dalla macchina si
              dovrebbe utilizzare --robot --list.

   Modificatori dell'operazione
       -k, --keep
              Non elimina i file input.


              A partire da xz 5.2.6, questa opzione fa si che xz comprima o
              decomprima anche se l'input e un collegamento simbolico a un
              file regolare, ha piu di un collegamento fisico o ha il bit
              setuid, setgid o sticky impostato. I bit setuid, setgid e sticky
              non vengono copiati nel file di destinazione. Nelle versioni
              precedenti questo veniva fatto solo con --force.

       -f, --force
              Questa opzione ha diverse conseguenze:

              o  Se il file di destinazione esiste gia, lo elimina prima di
                 comprimere o decomprimere.

              o  Comprime o decomprime anche se l'input e un collegamento
                 simbolico a un file regolare, ha piu di un collegamento
                 "hard", o ha il bit setuid, setgid o sticky impostato. I bit
                 setuid, setgid e sticky non sono copiati sul file
                 destinazione.

              o  Quando usato con --decompress --stdout e xz non riesce a
                 riconoscere il tipo di file sorgente, copia il file sorgente
                 cosi com'e sullo standard output. Questo permette a xzcat
                 --force di essere usato come cat(1) per file che non siano
                 stati compressi con xz. Si noti che in futuro xz potrebbe
                 supportare nuovi formati di file compressi, il che potrebbe
                 portare xz a decomprimere piu tipi di file anziche copiarli
                 come sono sullo standard output. --format=FORMATO puo essere
                 usato per forzare xz a decomprimere solo un singolo formato
                 di file.

       -c, --stdout, --to-stdout
              Scrive i dati compressi o decompressi nello standard output
              anziche in un file. Implica --keep.

       --single-stream
              Decomprime solo il primo flusso .xz, e ignora automaticamente i
              possibili dati di input rimanenti che seguono il flusso.
              Normalmente questi dati sporchi finali portano xz a visualizzare
              un errore.


              xz non decomprime mai piu di un flusso dai file .lzma o dai
              flussi grezzi, ma questa opzione fa comunque in modo che xz
              ignori i possibili dati finali dopo il file .lzma o il flusso
              grezzo.


              Questa opzione non ha effetto se la modalita operativa non e
              --decompress o --test.


              Dalla versione xz 5.7.1alpha, --single-stream implica --keep.

       --no-sparse
              Disabilita la creazione di file sparsi. Per impostazione
              predefinita, se si esegue la decompressione in un file regolare,
              xz tenta di rendere il file sparso se i dati decompressi
              contengono lunghe sequenze di zeri binari. Funziona anche quando
              si scrive su standard output, purche lo standard output sia
              collegato a un file regolare e siano soddisfatte alcune
              condizioni aggiuntive per renderlo sicuro. La creazione di file
              sparsi puo risparmiare spazio su disco e velocizzare la
              decompressione riducendo la quantita di I/O su disco.

       -S .SUFFISSO, --suffix=.SUFFISSO
              Durante la compressione, utilizzare .suf come suffisso per il
              file di destinazione anziche .xz o .lzma. Se non si scrive nello
              standard output e il file di origine ha gia il suffisso .suf,
              viene visualizzato un avvertimento e il file viene ignorato.


              Quando si decomprime, accetta i file con suffisso .suf in
              aggiunta a quelli con suffisso .xz, .txz, .lzma, .tlz, o .lz. Se
              il file sorgente ha suffisso .suf, il suffisso viene rimosso per
              ottenere il nome del file destinazione.


              Quando si comprimono o decomprimono flussi grezzi
              (--format=raw), il suffisso deve sempre essere specificato, a
              meno che si scriva sullo standard output, perche non esiste un
              suffisso predefinito per i flussi grezzi.

       --files[=FILE]
              Legge i nomi dei file da processare da FILE; se FILE e omesso, i
              nomi dei file vengono letti dallo standard input. I nomi dei
              file devono essere terminati da un carattere "a capo". Un
              trattino (-) e considerato come un nome di file regolare; non
              indica lo standard input. Se vengono forniti anche dei nomi di
              file come argomenti della riga di comando, questi sono
              processati prima di quelli letti da FILE.

       --files0[=FILE]
              Questo e identico a --files[=FILE] tranne per il fatto che ogni
              nome di file deve terminare con il carattere null.

   Formato file di base e opzioni di compressione
       -F FORMATO, --format=FORMATO
              Specifica il FORMATO del file da comprimere o decomprimere:

              auto   Questa e l'impostazione predefinita. Quando si comprime,
                     auto e equivalente a xz. Quando si decomprime, il formato
                     del file input viene rilevato automaticamente. Si noti
                     che per i flussi grezzi (creati con --format=raw) non e
                     possibile il rilevamento automatico.

              xz     Comprime nel formato di file .xz, oppure accetta solo
                     file .xz durante la decompressione.

              lzma, alone
                     Comprime nel formato tradizionale .lzma, oppure accetta
                     solo file .lzma per la decompressione. Il nome
                     alternativo alone e fornito per retrocompatibilita con le
                     LZMA Utils.

              lzip   Accetta solo file .lz per la decompressione. La
                     compressione non e supportata.


                     Sono supportati il formato .lz versione 0 e la versione 1
                     non estesa. I file della versione 0 sono stati prodotti
                     da lzip 1.3 e precedenti. Tali file non sono comuni, ma
                     possono essere trovati negli archivi di file poiche
                     alcuni pacchetti sorgente sono stati rilasciati in questo
                     formato. Anche alcune persone potrebbero avere vecchi
                     file personali in questo formato. Il supporto alla
                     decompressione per il formato versione 0 e stato rimosso
                     in lzip 1.18.


                     lzip 1.4 e successivi creano file nel formato v1.
                     L'estensione del marcatore di scaricamento
                     sincronizzazione al formato v1 e stata aggiunta in lzip
                     1.6. Questa estensione e utilizzata raramente e non e
                     supportata da xz(viene segnalata come input corrotto).

              raw    Comprime o decomprime un flusso grezzo (senza
                     intestazione). Questo e inteso solamente per utenti
                     avanzati. Per decodificare flussi grezzi, occorre usare
                     --format=raw e specificare esplicitamente la catena dei
                     filtri, che normalmente sarebbero conservati
                     nell'intestazione.

       -C CONTROLLO, --check=CONTROLLO
              Specifica il tipo di controllo di integrita. Il controllo viene
              calcolato dai dati non compressi e memorizzato nel file .xz.
              Questa opzione ha effetto solo quando si comprime nel formato
              .xz; il formato .lzma non supporta i controlli di integrita. Il
              controllo di integrita (se presente) viene verificato quando il
              file .xz viene decompresso.


              Tipi di CONTROLLI supportati:

              none   Non calcola proprio il controllo di integrita. Questo in
                     genere e una pessima idea. Puo essere utile quando
                     l'integrita dei dati viene comunque verificata con altri
                     mezzi.

              crc32  Calcola la firma CRC32 usando il polinomio di IEEE-802.3
                     (Ethernet).

              crc64  Calcola la firma CRC64 usando il polinomio di ECMA-182.
                     Questa e l'impostazione predefinita, perche e leggermente
                     migliore della CRC32 nel rilevare i file danneggiati e la
                     differenza di velocita e trascurabile.

              sha256 Calcola la firma SHA-256. Questo e un po' piu lento che
                     CRC32 e CRC64.


              L'integrita delle intestazioni .xz viene sempre verificata con
              CRC32. Non e possibile modificarlo o disabilitarlo.

       --ignore-check
              Non verifica il controllo di integrita dei dati compressi
              durante la decompressione. Il valore CRC3 nelle intestazioni .xz
              sara ancora verificata normalmente.


              Non usare questa opzione se non si e consci di cosa si sta
              facendo. Possibili ragioni per utilizzare questa opzione:

              o  Tentativo di recupero dei dati da un file .xz corrotto.

              o  Accelerazione della decompressione. Questo e importante
                 soprattutto con SHA-256 o con i file che sono stati compressi
                 molto bene. Si consiglia di non utilizzare questa opzione per
                 questo scopo, a meno che l'integrita del file non venga
                 verificata esternamente in altro modo.

       -0 ... -9
              Selezionare un livello di compressione preimpostato. Il valore
              predefinito e -6. Se vengono specificati piu livelli
              preimpostati, l'ultimo ha effetto. Se e gia stata specificata
              una catena di filtri personalizzata, l'impostazione di un
              livelli preimpostati cancella la catena di filtri
              personalizzata.


              Le differenze tra i livelli preimpostati sono piu significative
              rispetto a gzip(1)  e bzip2(1). Le impostazioni di compressione
              selezionate determinano i requisiti di memoria del
              decompressore, quindi l'utilizzo di un livello preimpostato
              troppo alto potrebbe rendere difficile la decompressione del
              file su un vecchio sistema con poca RAM. Specificamente, non e
              una buona idea utilizzare ciecamente -9 per tutto come spesso
              accade per gzip(1)  e bzip2(1).

              -0 ... -3
                     Questi sono livelli preimpostati piuttosto veloci. -0- a
                     volte e piu veloce di gzip -9 e comprime molto meglio.
                     Quelli piu alti hanno spesso una velocita paragonabile a
                     bzip2(1) con un rapporto di compressione comparabile o
                     migliore, anche se i risultati dipendono molto dal tipo
                     di dati che vengono compressi.

              -4 ... -6
                     Compressione da buona a molto buona, mantenendo
                     l'utilizzo della memoria del decompressore ragionevole
                     anche per vecchi sistemi. -6 e il valore predefinito, che
                     di solito e una buona scelta per distribuire file che
                     debbano essere decompressi anche su sistemi con solo
                     16 MiB di RAM. (Potrebbe valere la pena di considerare
                     anche -5e o -6e.  Si veda --extreme.)

              -7 ... -9
                     Questi sono come -6 ma con requisiti di memoria di
                     compressore e decompressore piu elevati. Sono utili solo
                     quando si comprimono file di dimensioni superiori a
                     8 MiB, 16 MiB e 32 MiB, rispettivamente.


              A parita di hardware, la velocita di decompressione e
              approssimativamente un numero costante di byte di dati compressi
              al secondo. In altre parole, migliore e la compressione, piu
              veloce sara di solito la decompressione. Cio significa anche che
              la quantita di output non compresso prodotta al secondo puo
              variare notevolmente.


              La tabella seguente riassume le caratteristiche dei livelli
              preimpostati:

                     Livello preimpostato   DictSize   CompCPU   CompMem   DecMem
                              -0            256 KiB       0        3 MiB    1 MiB
                              -1              1 MiB       1        9 MiB    2 MiB
                              -2              2 MiB       2       17 MiB    3 MiB
                              -3              4 MiB       3       32 MiB    5 MiB
                              -4              4 MiB       4       48 MiB    5 MiB
                              -5              8 MiB       5       94 MiB    9 MiB
                              -6              8 MiB       6       94 MiB    9 MiB
                              -7             16 MiB       6      186 MiB   17 MiB
                              -8             32 MiB       6      370 MiB   33 MiB
                              -9             64 MiB       6      674 MiB   65 MiB


              Descrizioni delle colonne:

              o  DictSize e la dimensione del dizionario LZMA2. E uno spreco
                 di memoria usare un dizionario piu grande della dimensione
                 del file non compresso. Ecco perche e una buona cosa evitare
                 di usare i livelli preimpostati -7 ... -9 quando non c'e
                 reale necessita. Con -6 e inferiori, la quantita di memoria
                 sprecata in genere e sufficientemente bassa da essere
                 trascurabile.

              o  CompCPU e una rappresentazione semplificata delle
                 impostazioni di LZMA2 che influenzano la velocita di
                 compressione. Anche la dimensione del dizionario influenza la
                 velocita, quindi mentre CompCPU e lo stesso per i livelli -6
                 ... -9, i livelli piu alti tendono ancora ad essere un po'
                 piu lenti. Per avere una compressione ancora piu lenta e
                 quindi potenzialmente migliore, utilizzare --extreme.

              o  CompMem contiene i requisiti di memoria del compressore in
                 modalita a singola thread. Puo variare leggermente tra le
                 versioni di xz.

              o  DecMem contiene i requisiti di memoria del decompressore. In
                 altre parole, le impostazioni di compressione determinano i
                 requisiti di memoria del decompressore. L'utilizzo esatto
                 della memoria del decompressore e leggermente superiore alla
                 dimensione del dizionario LZMA2, ma i valori nella tabella
                 sono stati arrotondati per eccesso al successivo MiB
                 completo.


              I requisiti di memoria per la modalita a thread multiple sono
              significativamente piu alti che per la modalita thread singola.
              Con il valore predefinito di --block-size, ogni thread richiede
              3*3*dimensione del dizionario piu CompMem oppure DecMem. Ad
              esempio, 4 thread con il livello preimpostato -6 hanno bisogno
              di 660-670 MiB di memoria.

       -e, --extreme
              Utilizzare una variante piu lenta del livello preimpostato
              selezionato (-0 ... -9) nella speranza di ottenere un rapporto
              di compressione leggermente migliore, ma con un po' di sfortuna
              questo potrebbe anche renderlo peggiore. L'utilizzo della
              memoria del decompressore non e influenzato, ma l'utilizzo della
              memoria del compressore aumenta leggermente ai livelli
              preimpostati -0 ... -3.


              Dal momento che ci sono due livelli preimpostati con dimensione
              del dizionario di 4 MiB e 8 MiB, i livelli preimpostati -3e e
              -5e usano impostazioni leggermente piu veloci (minore CompCPU)
              di -4e e -6e, rispettivamente. In questo modo non ci sono due
              livelli preimpostati identici.

                     Livello preimpostato   DictSize   CompCPU   CompMem   DecMem
                             -0e            256 KiB       8        4 MiB    1 MiB
                             -1e              1 MiB       8       13 MiB    2 MiB
                             -2e              2 MiB       8       25 MiB    3 MiB
                             -3e              4 MiB       7       48 MiB    5 MiB
                             -4e              4 MiB       8       48 MiB    5 MiB
                             -5e              8 MiB       7       94 MiB    9 MiB
                             -6e              8 MiB       8       94 MiB    9 MiB
                             -7e             16 MiB       8      186 MiB   17 MiB
                             -8e             32 MiB       8      370 MiB   33 MiB
                             -9e             64 MiB       8      674 MiB   65 MiB


              Ad esempio, ci sono un totale di quattro livelli preimpostati
              che utilizzano un dizionario da 8 MiB, il cui ordine dal piu
              veloce al piu lento e -5, -6, -5e, e -6e.

       --fast
       --best Questi sono alias in qualche modo fuorvianti per -0 e -9,
              rispettivamente. Sono forniti solo per retrocompatibilita con le
              LZMA Utils. Evitare di utilizzare queste opzioni.

       --block-size=DIMENSIONE
              Quando si comprime in formato .xz, divide i dati input in
              blocchi da DIMENSIONE byte. I blocchi vengo compressi
              indipendentemente l'uno dall'altro, cosa che aiuta con le thread
              multiple e rende possibile la decompressione con accessi casuali
              limitati. Questa opzione viene usata tipicamente per
              sovrascrivere la dimensione predefinita dei blocchi in modalita
              a thread multiple, ma puo essere utilizzata anche in modalita
              thread singola.


              In modalita a thread multiple verranno allocati circa il triplo
              di DIMENSIONE di byte in ogni thread per il buffering dell'input
              e dell'output. La DIMENSIONE predefinita e tre volte la
              dimensione del dizionario LZMA2 e comunque almeno 1 MiB.
              Tipicamente un buon valore e 2-4 volte la dimensione del
              dizionario LZMA2 oppure almeno 1 MiB. Usare una DIMENSIONE
              inferiore della dimensione del dizionario LZMA2 causa uno spreco
              di RAM, in quanto il buffer del dizionario LZMA2 non verra mai
              riempito completamente. In modalita a thread multiple, la
              dimensione dei blocchi e conservata nelle intestazioni dei
              blocchi. L'informazione sulla dimensione e richiesta per la
              decompressione a thread multiple.


              Nella modalita a thread singola, per impostazione predefinita
              non viene eseguita alcuna suddivisione in blocchi.
              L'impostazione di questa opzione non influisce sull'utilizzo
              della memoria. Nessuna informazione sulle dimensioni viene
              memorizzata nelle intestazioni di blocco, quindi i file creati
              in modalita a thread singola non saranno identici ai file creati
              in modalita a thread multiple. La mancanza di informazioni sulle
              dimensioni significa anche che xz non sara in grado di
              decomprimere i file in modalita a thread multiple.

       --block-list=ELEMENTI
              Quando si comprime nel formato .xz, inizia un nuovo blocco con
              una catena di filtri personalizzata dopo gli intervalli indicati
              di dati non compressi.


              Gli ELEMENTI sono un elenco separato da virgole. Ogni elemento e
              costituito da un numero di catena di filtri opzionale compreso
              tra 0 e 9 seguito da due punti (:) e da una dimensione richiesta
              di dati non compressi. L'omissione di un elemento (due o piu
              virgole consecutive) e una scorciatoia per utilizzare le
              dimensioni e i filtri dell'elemento precedente.


              Se il file di input e piu grande della somma delle dimensioni in
              ELEMENTI, l'ultimo elemento viene ripetuto fino alla fine del
              file. Il valore speciale 0 puo essere utilizzato come ultima
              dimensione per indicare che il resto del file deve essere
              codificato come un singolo blocco.


              E possibile specificare una catena di filtri alternativa per
              ogni blocco in combinazione con le opzioni --filters1=FILTRI ...
              --filters9=FILTRI. Queste opzioni definiscono catene di filtri
              con un identificatore compreso tra 1-9. La catena di filtri 0
              puo essere utilizzata per indicare la catena di filtri
              predefinita, che equivale a non specificare una catena di
              filtri. L'identificatore della catena di filtri puo essere
              utilizzato prima della dimensione non compressa, seguita da due
              punti (:).  Ad esempio, se si specifica
              --block-list=1:2MiB,3:2MiB,2:4MiB,,2MiB,0:4MiB allora i blocchi
              verranno creati utilizzando:

              o  La catena dei filtri specificata da --filters1 e un input di
                 2 MiB

              o  La catena dei filtri specificata da --filters3 e un input di
                 2 MiB

              o  La catena dei filtri specificata da --filters2 e un input di
                 4 MiB

              o  La catena dei filtri specificata da --filters2 e un input di
                 4 MiB

              o  La catena di filtri predefinita e l'input di 2 MiB

              o  La catena di filtri predefinita e l'input di 4 MiB per ogni
                 blocco fino alla fine dell'input.


              Se si specifica una dimensione che supera la dimensione del
              blocco del codificatore (il valore predefinito in modalita
              thread oppure il valore specificato con
              --block-size=DIMENSIONE), il codificatore creera blocchi
              aggiuntivi mantenendo i limiti specificati in ELEMENTI. Ad
              esempio, se si indica --block-size=10MiB
              --block-list=5MiB,10MiB,8MiB,12MiB,24MiB e il file input e di 80
              MiB, si otterranno 11 blocchi: 5, 10, 8, 10, 2, 10, 10, 4, 10,
              10, and 1 MiB.


              In modalita a thread multiple, le dimensioni dei blocchi vengono
              memorizzate nelle intestazioni dei blocchi. Questo non avviene
              in modalita thread singola, quindi l'output codificato non sara
              identico a quello della modalita a thread multiple.

       --flush-timeout=TIMEOUT
              Quando si comprime, se sono passati piu di TIMEOUT millisecondi
              (un intero positivo) dallo scaricamento precedente e la lettura
              di ulteriori input si bloccherebbe, tutti i dati di input in
              sospeso vengono scaricati dal codificatore e resi disponibili
              nel flusso di output. Questo puo essere utile se xz viene usato
              per comprimere dati in streaming dalla rete. Piccoli valori del
              TIMEOUT rendono disponibili i dati al ricevente con un ritardo
              minimo, mentre valori di TIMEOUT grandi danno un miglior
              rapporto di compressione.


              Questa funzionalita e disabilitata per impostazione predefinita.
              Se questa opzione viene specificata piu di una volta, l'ultima
              ha effetto. Il valore speciale TIMEOUT di 0 puo essere
              utilizzato per disabilitare esplicitamente questa funzionalita.


              Questa funzionalita non e disponibile sui sistemi non-POSIX.


              Questa funzionalita e sperimentale. Attualmente xz non e adatto
              per decomprimere il flusso in tempo reale, a causa di come
              effettua il buffering.

       --no-sync
              Non sincronizzare il file target e la sua directory sull'unita
              di archiviazione prima di rimuovere il file sorgente. Questo puo
              migliorare le performance se si sta comprimendo o decomprimendo
              tanti piccoli file. Tuttavia, se il sistema dovesse andare in
              crash subito dopo l'eliminazione, e possibile che il file
              destinazione non sia ancora stato scritto sull'unita di
              archiviazione mentre l'operazione di eliminazione si. In questo
              caso non saranno piu disponibili ne il file sorgente originale
              ne il file di destinazione.


              Questa opzione ha effetto solamente quando xz deve rimuovere il
              file sorgente. Negli altri casi la sincronizzazione non viene
              eseguita.


              La sincronizzazione e --no-sync sono stati aggiunti nella
              versione xz 5.7.1alpha.

       --memlimit-compress=LIMITE
              Imposta un limite di utilizzo della memoria per la compressione.
              Se questa opzione viene specificata piu volte, ha effetto
              l'ultima.


              Se le impostazioni di compressione superano il valore LIMITE, xz
              tentera di regolare le impostazioni verso il basso in modo che
              il limite non venga piu superato e visualizzera un avviso che
              indica che e stata eseguita una regolazione automatica. Le
              regolazioni vengono eseguite in questo ordine: riduzione del
              numero di thread, passaggio alla modalita a thread singola se
              anche un solo thread in modalita a thread multiple supera il
              LIMITE, e infine riducendo la dimensione del dizionario LZMA2.


              Quando si comprime con --format=raw oppure se si e specificato
              --no-adjust, e possibile ridurre solo il numero di thread,
              poiche questo puo essere fatto senza influire sull'output
              compresso.


              Se non e possibile soddisfare il LIMITE anche con le regolazioni
              sopra descritte, viene visualizzato un errore e xz uscira con lo
              stato di uscita 1.


              Il LIMITE puo essere specificato in diversi modi:

              o  Il LIMITE puo essere un valore assoluto in byte. Usare un
                 suffisso intero come MiB puo essere utile. Ad esempio:
                 --memlimit-compress=80MiB

              o  Il LIMITE puo essere specificato come percentuale della
                 memoria fisica (RAM) totale. Questo puo essere utile
                 specialmente quando si imposta la variabile di ambiente
                 XZ_DEFAULTS in uno script di inizializzazione di shell che e
                 condiviso tra computer diversi. In questo modo il limite e
                 automaticamente piu grande sui sistemi con piu memoria. Ad
                 esempio: --memlimit-compress=70%

              o  Il LIMITE puo essere reimpostato al suo valore predefinito
                 impostandolo a 0.Questo attualmente equivale a impostare il
                 LIMITE a max (nessun limite nell'utilizzo di memoria).


              Per xz a 32-bit esiste un caso particolare: se il LIMITE fosse
              oltre 4020 MiB, il LIMITE viene impostato a 4020 MiB. Su MIPS32
              invece viene usato 2000 MiB. (I valori 0 e max non sono
              influenzati da questo. Un comportamento simile non esiste per la
              decompressione). Questo puo essere utile quando un eseguibile a
              32 bit ha accesso a uno spazio di indirizzi da 4 GiB (2 GiB su
              MIPS32), e si spera che non faccia danni in altre situazioni.


              Vedere anche la sezione Utilizzo memoria

       --memlimit-decompress=LIMITE
              Imposta un limite di utilizzo della memoria per la
              decompressione. Questo influisce anche sulla modalita --list. Se
              l'operazione non e possibile senza oltrepassare il LIMITE, xz
              mostrera un errore e la decompressione del file fallira. Si veda
              --memlimit-compress=LIMITE per possibili modi per specificare il
              LIMITE.

       --memlimit-mt-decompress=LIMITE
              Imposta un limite di utilizzo della memoria per la
              decompressione multi-thread. Questo puo influire solo sul numero
              di thread; non indurra mai xz a rifiutarsi di decomprimere un
              file. Se LIMITE e troppo basso per consentire le thread
              multiple, il LIMITE viene ignorato e xz continuera in modalita a
              thread singola. Si noti che se viene utilizzato anche
              --memlimit-decompress, si applichera sempre sia alla modalita a
              thread singola che a quella a thread multiple, e quindi il
              LIMITE effettivo per le thread multiple non sara mai superiore a
              quello impostato con --memlimit-decompress.


              In contrasto con le altre opzioni di limite di utilizzo della
              memoria, --memlimit-mt-decompress=LIMITE ha un LIMITE
              predefinito specifico per il sistema. xz --info-memory puo
              essere utilizzato per vedere il valore corrente.


              Questa opzione e il suo valore predefinito esistono perche,
              senza un limite, il decompressore a thread multiple potrebbe
              finire per allocare una quantita folle di memoria per alcuni
              file input. Se il valore predefinito LIMITE e troppo basso sul
              proprio sistema, e possibile aumentarlo liberamente, ma non deve
              essere mai impostato a un valore piu grande della quantita di
              RAM utilizzabile, in quanto con file di input appropriati xz
              cerchera di utilizzare quella quantita di memoria anche con un
              basso numero di thread. Esaurire la memoria o fare swap non
              migliorera le performance della decompressione.


              Vedi --memlimit-compress=LIMITE per possibili modi per
              specificare il LIMITE. Impostando LIMITE su 0 si ripristina il
              valore predefinito LIMITE specifico del sistema.

       -M LIMITE, --memlimit=LIMITE, --memory=LIMITE
              Questo equivale a specificare --memlimit-compress=LIMITE
              --memlimit-decompress=LIMITE --memlimit-mt-decompress=LIMITE.

       --no-adjust
              Visualizza un errore e esce se non e possibile soddisfare il
              limite di utilizzo della memoria senza regolare le impostazioni
              che influiscono sull'output compresso. In altre parole, cio
              impedisce a xz di passare il codificatore dalla modalita
              multi-thread alla modalita a thread singola e di ridurre le
              dimensioni del dizionario LZMA2. Anche quando viene usata questa
              opzione, il numero di thread puo essere ridotto per soddisfare
              il limite di utilizzo della memoria, in quanto cio non influira
              sull'output compresso.


              La regolazione automatica e sempre disabilitata quando si creano
              flussi raw (--format=raw).

       -T THREADS, --threads=THREADS
              Specifica il numero di thread di lavoro da utilizzare.
              L'impostazione di THREADS al valore speciale 0 fa si che xz
              utilizzi fino a un numero di thread che il processore/i del
              sistema supportano. Il numero effettivo di thread puo essere
              inferiore a THREADS se il file di input non e sufficientemente
              grande per il threading con le impostazioni specificate o se
              l'utilizzo di piu thread supera il limite di utilizzo della
              memoria.


              I compressori a thread singola e a thread multiple producono
              output diversi. Il compressore a thread singola produrra la
              dimensione del file piu piccola, ma solo l'output del
              compressore a thread multiple puo essere decompresso utilizzando
              piu thread. Impostando THREADS su 1 verra utilizzata la modalita
              a thread singola. L'impostazione di THREADS su qualsiasi altro
              valore, incluso 0, utilizzera il compressore a thread multiple
              anche se il sistema supporta un solo thread hardware. (xz 5.2.x
              utilizzava la modalita a thread singola in questa situazione.)


              Per utilizzare la modalita a thread multiple con un solo thread,
              impostare THREADS su +1. Il prefisso + non ha alcun effetto con
              valori diversi da 1. Un limite di utilizzo della memoria puo
              comunque far passare xz alla modalita a thread singola a meno
              che non venga utilizzato --no-adjust. Il supporto per il
              prefisso + e stato aggiunto in xz 5.4.0.


              Se e stato richiesto un numero automatico di thread e non e
              stato specificato alcun limite di utilizzo della memoria, verra
              utilizzato un limite "soft" predefinito, specifico del sistema,
              per limitare eventualmente il numero di thread. E un limite
              "soft" nel senso che viene ignorato se il numero di thread
              diventa uno, quindi un limite soft non impedira mai a xz di
              comprimere o decomprimere. Questo limite soft predefinito non
              fara passare xz dalla modalita a thread multiple alla modalita
              thread singola. I limiti attivi possono essere visualizzati con
              xz --info-memory.


              Attualmente l'unico metodo di threading consiste nel dividere
              l'input in blocchi e comprimerli indipendentemente l'uno
              dall'altro. La dimensione predefinita del blocco dipende dal
              livello di compressione e puo essere sovrascritta con l'opzione
              --block-size=DIMENSIONE.


              La decompressione a thread multiple funziona solo su file che
              contengano piu blocchi con l'informazione della dimensione nelle
              intestazioni del blocco. Tutti i file sufficientemente grandi
              compressi in modalita a thread multiple soddisfano questa
              condizione, mentre i file compressi in modalita thread singola
              no, neanche se si e utilizzato --block-size= DIMENSIONE.


              Il valore predefinito per THREADS e 0. In xz 5.4.x e precedenti
              il valore predefinito era 1.

   Catene di filtri di compressione personalizzate
       Una catena di filtri personalizzata consente di specificare in
       dettaglio le impostazioni di compressione invece di fare affidamento
       sulle impostazioni associate ai livelli preimpostati. Quando viene
       specificata una catena di filtri personalizzata, le opzioni relative ai
       livelli preimpostati (-0 ... -9 e --extreme) specificate in precedenza
       sulla riga di comando vengono dimenticate. Se un'opzione livello
       preimpostato viene specificata dopo una o piu opzioni della catena di
       filtri personalizzata, il nuovo livello preimpostato ha effetto e le
       opzioni della catena di filtri personalizzate specificate in precedenza
       vengono dimenticate.

       Una catena di filtri e paragonabile a una pipe sulla riga di comando.
       Durante la compressione, l'input non compresso va al primo filtro, il
       cui output va al filtro successivo (se presente). L'output dell'ultimo
       filtro viene scritto nel file compresso. Il numero massimo di filtri
       nella catena e quattro, ma in genere una catena di filtri ha solo uno o
       due filtri.

       Molti filtri hanno limitazioni su dove possono trovarsi nella catena di
       filtri: alcuni filtri possono funzionare solo come ultimo filtro della
       catena, altri solo come filtro non ultimo e alcuni funzionano in
       qualsiasi posizione nella catena. A seconda del filtro, questa
       limitazione e inerente alla struttura del filtro oppure esiste per
       evitare problemi di sicurezza.

       Una catena di filtri personalizzata puo essere specificata in due modi
       diversi. Le opzioni --filters=FILTRI and --filters1=FILTRI ...
       --filters9=FILTRI permettono di specificare un'intera catena di filtri
       in una opzione utilizzando la sintassi della stringa del filtro di
       lzma. In alternativa, una catena di filtri puo essere specificata
       utilizzando una o piu singole opzioni di filtro nell'ordine desiderato
       nella catena di filtri. Questo significa che l'ordine delle singole
       opzioni di filtro e importante! Quando si decodificano i flussi grezzi
       (--format=raw), la catena di filtri deve essere specificata nello
       stesso ordine in cui e stata specificata durante la compressione.
       Qualsiasi filtro individuale o opzione livello preimpostato specificata
       prima dell'opzione della catena completa (--filters=FILTRI) verra
       dimenticata. I singoli filtri specificati dopo l'opzione della catena
       completa reimposteranno la catena di filtri.

       Sia l'opzione di filtro completo che quella individuale accettano
       OPZIONI specifiche del filtro come un elenco separato da virgole.
       Virgole in eccesso nelle OPZIONI vengono ignorate. Ogni opzione ha un
       valore di default, quindi occorre specificare solamente quelle che si
       desidera modificare.

       Per vedere l'intera catena di filtri e OPZIONI, usa xz -vv (ossia, usa
       --verbose due volte). Questo funziona anche per visualizzare le opzioni
       della catena di filtri utilizzate dai livelli preimpostati.

       --filters=FILTRI
              Specifica l'intera catena dei filtri oppure un livello
              preimpostato in una singola opzione. Ogni filtro puo essere
              separato da spazi o da due trattini (--). Potrebbe essere
              necessario mettere tra virgolette i FILTRI sulla riga di comando
              della shell in modo che vengano analizzati come una singola
              opzione. Per indicare OPZIONI, usa : o =. Un livello
              preimpostato puo essere preceduto da un - e seguito da zero o
              piu flag. L'unico flag supportato e e per applicare le stesse
              opzioni di --extreme.

       --filters1=FILTRI ... --filters9=FILTRI
              Specifica fino a nove catene di filtri aggiuntive che possono
              essere utilizzate con --block-list.


              Ad esempio, quando si comprime un archivio con file eseguibili
              seguiti da file di testo, la parte eseguibile potrebbe
              utilizzare una catena di filtri con un filtro BCJ e la parte di
              testo solo il filtro LZMA2.

       --filters-help
              Mostra un messaggio di aiuto che descrive come specificare
              livelli preimpostati e catene di filtri personalizzati nelle
              opzioni --filters e --filters1=FILTRI ... --filters9=FILTRI, e
              termina con successo.

       --lzma1[=OPZIONI]
       --lzma2[=OPZIONI]
              Aggiunge un filtro LZMA1 o LZMA2 alla catena dei filtri. Questi
              filtri possono essere usati solo come ultimo filtro della
              catena.


              LZMA1 e un filtro obsoleto, supportato quasi esclusivamente a
              causa del formato obsoleto di file .lzma, che supporta solo
              LZMA1. LZMA2 e una versione aggiornata di LZMA1 che risolve
              alcuni problemi pratici di LZMA1. Il formato .xz utilizza LZMA2
              e non supporta LZMA1. La velocita e i rapporti di compressione
              di LZMA1 e LZMA2 sono praticamente gli stessi.


              LZMA1 e LZMA2 condividono lo stesso insieme di OPZIONI:

              preset=PRESET
                     Reimposta tutte le OPZIONI LZMA1 o LZMA2 a PRESET. Il
                     PRESET (livello preimpostato) consiste di un numero
                     intero, che puo essere seguito da modificatori costituiti
                     da una singola lettera. Il numero intero puo andare da 0
                     a 9, corrispondenti alle opzioni della riga di comando -0
                     ... -9. L'unico modificatore attualmente supportato e e,
                     che corrisponde a --extreme. Se non viene specificato
                     alcun PRESET, i valori predefiniti delle OPZIONI LZMA1 o
                     LZMA2 sono presi dal livello preimpostato 6.

              dict=DIMENSIONE
                     La DIMENSIONEdel dizionario (buffer di cronologia) indica
                     quanti byte dei dati non compressi elaborati di recente
                     vengono mantenuti in memoria. L'algoritmo tenta di
                     trovare sequenze di byte ripetute (corrispondenze) nei
                     dati non compressi e di sostituirle con riferimenti ai
                     dati attualmente presenti nel dizionario. Piu grande e il
                     dizionario, maggiore e la possibilita di trovare una
                     corrispondenza. Quindi, l'aumento della DIMENSIONE del
                     dizionario di solito migliora il rapporto di
                     compressione, ma un dizionario piu grande del file non
                     compresso e uno spreco di memoria.


                     Una DIMENSIONE tipica per un dizionario e da 64 KiB a
                     64 MiB. Il minimo e 4 KiB.  Il massimo per la
                     compressione e attualmente 1.5 GiB (1536 MiB).  La
                     decompressione supporta gia dizionari fino a 4 GiB meno 1
                     byte, che e il massimo per i formati di flusso LZMA1 e
                     LZMA2.


                     La DIMENSIONE del dizionario e il cercatore di
                     corrispondenze (CERCATORE) insieme determinano l'utilizzo
                     della memoria del codificatore LZMA1 o LZMA2. Per la
                     decompressione e necessaria la stessa DIMENSIONE del
                     dizionario utilizzata durante la compressione (o piu
                     grande), quindi l'utilizzo della memoria del
                     decodificatore e determinato dalla dimensione del
                     dizionario utilizzato durante la compressione. Le
                     intestazioni .xz memorizzano la DIMENSIONE del dizionario
                     come 2^n o 2^n + 2^( n-1), quindi queste DIMENSIONI sono
                     in qualche modo preferite per la compressione. Altre
                     DIMENSIONI verranno arrotondate per eccesso quando
                     memorizzate nelle intestazioni .xz.

              lc=lc  Specificare il numero di bit di contesto letterali. Il
                     minimo e 0 e il massimo e 4; Il valore predefinito e 3.
                     Inoltre, la somma di lc e lp non deve superare 4.


                     Tutti i byte che non possono essere codificati come
                     corrispondenze vengono codificati come valori letterali.
                     In altre parole, i valori letterali sono semplicemente
                     byte a 8 bit codificati uno alla volta.


                     La codifica letterale presuppone che i bit di lc piu alti
                     del byte non compresso precedente siano correlati al byte
                     successivo. Ad esempio, in un tipico testo inglese, una
                     lettera maiuscola e spesso seguita da una lettera
                     minuscola e una lettera minuscola e solitamente seguita
                     da un'altra lettera minuscola. Nel set di caratteri
                     US-ASCII, i tre bit piu alti sono 010 per le lettere
                     maiuscole e 011 per le lettere minuscole. Quando lc e
                     almeno 3, la codifica letterale puo sfruttare questa
                     proprieta nei dati non compressi.


                     Il valore predefinito (3) solitamente e buono. Se si
                     desidera la compressione massima, provare con lc=4.  A
                     volte aiuta un po', e a volte rende la compressione
                     peggiore. Se la rende peggiore, provare anche lc=2.

              lp=lp  Specificare il numero di bit di posizione letterale. Il
                     minimo e 0 e il massimo e 4; Il valore predefinito e 0.


                     Il parametro lp influisce sul tipo di allineamento nei
                     dati non compressi presunto durante la codifica dei
                     valori letterali. Vedi pb di seguito per ulteriori
                     informazioni sull'allineamento.

              pb=pb  Specificare il numero di bit di posizione. Il minimo e 0
                     e il massimo e 4; Il valore predefinito e 2.


                     Il parametro pb influisce su quale tipo di allineamento
                     nei dati non compressi sia assunto in generale.
                     L'impostazione predefinita indica un allineamento a
                     quattro byte (2^pb =2^2=4), che e spesso una buona scelta
                     se non c'e un'ipotesi migliore.


                     Quando l'allineamento e noto, impostare pb concordemente
                     puo ridurre un po' le dimensioni del file. Ad esempio,
                     con file di testo con 1 byte di allineamento (US-ASCII,
                     ISO-8859-*, UTF-8), impostare pb=0 puo migliorare
                     leggermente la compressione. Per il testo UTF-16, pb=1 e
                     una buona scelta. Se l'allineamento e un numero dispari,
                     come 3 byte, pb=0 potrebbe essere la scelta migliore.


                     Anche se l'allineamento assunto puo essere regolato con
                     pb e lp, LZMA1 e LZMA2 favoriscono ancora leggermente
                     l'allineamento a 16 byte. Potrebbe valere la pena tenerlo
                     in considerazione quando si progettano formati di file
                     che possono essere spesso compressi con LZMA1 o LZMA2.

              mf=CERCATORE
                     Il cercatore di corrispondenze ha un effetto importante
                     sulla velocita del codificatore, sull'utilizzo della
                     memoria e sul rapporto di compressione. Di solito i
                     cercatori di corrispondenze a catena hash sono piu veloci
                     dei cercatori di corrispondenze ad albero binario. Il
                     valore predefinito dipende da PRESET : 0 usa hc3, 1-3 usa
                     hc4 e il resto usa bt4.


                     Sono supportati i seguenti cercatori di corrispondenze.
                     Le formule di utilizzo della memoria riportate di seguito
                     sono approssimazioni, che sono le piu vicine alla realta
                     quando DIZIONARIO e una potenza di due.

                     hc3    Catena hash con hashing da 2 e 3 byte
                            Minimo valore per NICE: 3
                            Utilizzo memoria:
                            DIZIONARIO * 7.5 (se DIZIONARIO <= 16 MiB);
                            DIZIONARIO * 5.5 + 64 MiB (se DIZIONARIO > 16 MiB)

                     hc4    Catena hash con hash da 2, 3 e 4 byte
                            Minimo valore per NICE: 4
                            Utilizzo memoria:
                            DIZIONARIO * 7.5 (se DIZIONARIO <= 32 MiB);
                            DIZIONARIO * 6.5 (se DIZIONARIO > 32 MiB)

                     bt2    Albero binario con hashing da 2 byte
                            Valore minimo per NICE: 2
                            Utilizzo di memoria: DIZIONARIO * 9.5

                     bt3    Albero binario con hashing da 2 e 3 byte
                            Minimo valore per NICE: 3
                            Utilizzo memoria:
                            DIZIONARIO * 11.5 (se DIZIONARIO <= 16 MiB);
                            DIZIONARIO * 9.5 + 64 MiB (se DIZIONARIO > 16 MiB)

                     bt4    Albero binario con hashing da 2, 3 e 4 byte
                            Minimo valore per NICE: 4
                            Utilizzo memoria:
                            DIZIONARIO * 11.5 (se DIZIONARIO <= 32 MiB);
                            DIZIONARIO * 10.5 (se DIZIONARIO > 32 MiB)

              mode=MODALITA
                     La MODALITA di compressione specifica il metodo per
                     analizzare i dati prodotti dal cercatore di
                     corrispondenze. Le MODALITA supportate sono fast e
                     normal. Il predefinito e fast per i PRESET 0-3 e normal
                     per i PRESET 4-9.


                     Di solito fast viene utilizzato con i cercatori di
                     corrispondenze a catena hash e normal con i cercatori di
                     corrispondenze a albero binario. Questo e anche quello
                     che fanno i PRESET.

              nice=NICE
                     Specifica quella che si considera una lunghezza
                     accettabile ("nice") per una corrispondenza. Una volta
                     trovata una corrispondenza di almeno NICE byte,
                     l'algoritmo smette di cercare corrispondenze
                     potenzialmente migliori.


                     NICE puo valere 2-273 byte. Valori piu alti tendono a
                     dare un miglior rapporto di compressione ai danni della
                     velocita. Il valore predefinito dipende dal PRESET.

              depth=PROFONDITA
                     Specificare la profondita di ricerca massima nel
                     cercatore di corrispondenze. Il valore predefinito e il
                     valore speciale 0, che dice al compressore di determinare
                     una PROFONDITA ragionevole da CERCATORE e NICE.


                     Una PROFONDITA ragionevole per le catene hash e 4-100 e
                     16-1000 per gli alberi binari. Utilizzando valori di
                     PROFONDITA molto alti si puo rendere il codificatore
                     estremamente lento con alcuni file. Evitare di impostare
                     la PROFONDITA oltre 1000 a meno che si sia preparati a
                     interrompere la compressione nel caso in cui richieda
                     troppo tempo.


              Quando si decomprime un flusso grezzo (--format=raw), LZMA2 ha
              bisogno solamente della DIMENSIONE del dizionario. LZMA1 ha
              anche bisogno di lc, lp, e pb.

       --x86[=OPZIONI]
       --arm[=OPZIONI]
       --armthumb[=OPZIONI]
       --arm64[=OPZIONI]
       --powerpc[=OPZIONI]
       --ia64[=OPZIONI]
       --sparc[=OPZIONI]
       --riscv[=OPZIONI]
              Aggiunge un filtro branch/call/jump (BCJ) alla catena dei
              filtri. Questi filtri non possono essere utilizzati come ultimo
              filtro nella catena di filtri.


              Un filtro BCJ converte gli indirizzi relativi in codice macchina
              nelle loro controparti assolute. Questo non cambia la dimensione
              dei dati ma aumenta la ridondanza, cosa che puo aiutare LZMA2 a
              produrre .xz file 0-15 % piu piccoli. I filtri BCJ sono sempre
              reversibili, quindi usare un filtro BCJ per il tipo di dati
              sbagliato non causa perdita di dati, al massimo puo determinare
              un rapporto di compressione leggermente peggiore. I filtri BCJ
              sono molto veloci e usano una quantita di memoria minima.


              Questi filtri BCJ presentano problemi noti relativi al rapporto
              di compressione:

              o  Alcuni tipi di file contenenti codice eseguibile (ad esempio,
                 file oggetto, librerie statiche e moduli del kernel Linux)
                 hanno gli indirizzi nelle istruzioni riempiti con valori di
                 riempimento. Questi filtri BCJ eseguiranno comunque la
                 conversione degli indirizzi, il che peggiorera la
                 compressione con questi file.

              o  Se un filtro BCJ viene applicato a un archivio, e possibile
                 che renda il rapporto di compressione peggiore rispetto a non
                 usare un filtro BCJ. Ad esempio, se ci sono eseguibili simili
                 o addirittura identici, il filtraggio probabilmente rendera i
                 file meno simili e quindi la compressione sara peggiore.
                 Anche il contenuto dei file non eseguibili nello stesso
                 archivio puo essere importante. In pratica bisogna provare
                 con e senza filtro BCJ per vedere quale sia il migliore in
                 ogni situazione.


              Insiemi diversi di istruzioni hanno diversi allineamenti: il
              file eseguibile deve essere allineato a un multiplo di questo
              valore nei dati di input per far funzionare il filtro.

                     Filtro      Allineamento   Note
                     x86               1        32-bit o 64-bit x86
                     ARM               4
                     ARM-Thumb         2
                     ARM64             4        L'allineamento migliore e a 4096 byte
                     PowerPC           4        Solo big-endian
                     IA-64            16        Itanium
                     SPARC             4
                     RISC-V            2


              Dal momento che i dati filtrati da BCJ solitamente sono
              compressi con LZMA2, il rapporto di compressione puo essere
              migliorato leggermente se le opzioni LZMA2 sono impostate in
              modo che corrispondano all'allineamento del filtro BCJ
              selezionato. Esempi:

              o  Il filtro IA-64 ha un allineamento a 16 byte, quindi
                 pb=4,lp=4,lc=0 e una buona scelta per LZMA2 (2^4=16).

              o  Il codice RISC-V ha un allineamento a 2 o 4 byte a seconda
                 che il file contenga o meno istruzioni 16 bit compresse
                 (cosiddetta estensione C). Quando sono usate istruzioni a 16
                 bit, va bene pb=2,lp=1,lc=3 o pb=1,lp=1,lc=3. Quando le
                 istruzioni a 16 bit non sono presenti, e meglio
                 pb=2,lp=2,lc=2. Si puo usare readelf -h per controllare se
                 "RVC" appare sulla riga del "Flag".

              o  ARM64 e sempre allineato a 4 byte, quindi pb=2,lp=2,lc=2 e la
                 scelta migliore.

              o  Il filtro x86 e un'eccezione. Di solito e bene attenersi alle
                 impostazioni predefinite di LZMA2 (pb=2,lp=0,lc=3) quando si
                 comprimono gli eseguibili x86.


              Tutti i filtri BCJ supportano le stesse OPZIONI:

              start=OFFSET
                     Specifica l'OFFSET iniziale utilizzato per la conversione
                     tra indirizzi relativi e assoluti. L'OFFSET deve essere
                     un multiplo dell'allineamento del filtro (vedere la
                     tabella sopra). Il valore predefinito e zero. In pratica,
                     l'impostazione predefinita e buona; specificare un OFFSET
                     personalizzato non e quasi mai utile.

       --delta[=OPZIONI]
              Aggiunge un filtro Delta alla catena dei filtri. I filtri Delta
              non possono essere utilizzati come ultimo filtro nella catena di
              filtri.


              Al momento e supportato solo un semplice calcolo delta
              byte-per-byte. Puo essere utile quando si comprime, per esempio,
              immagini bitmap non compresse o file audio PCM non compressi.
              Tuttavia, speciali algoritmi ad-hoc potrebbero dare risultati
              significativamente migliori che Delta + LZMA2. Questo e vero
              specialmente per l'audio, che comprime piu velocemente e meglio,
              ad esempio, con flac(1).


              OPZIONI supportate:

              dist=DISTANZA
                     Specifica la DISTANZA del calcolo delta in byte. DISTANZA
                     deve essere nel range 1-256. Il valore predefinito e 1.


                     Per esempio, con dist=2 e un input di 8 byte A1 B1 A2 B3
                     A3 B5 A4 B7, l'output sara A1 B1 01 02 01 02 01 02.

   Altre opzioni
       -q, --quiet
              Sopprime avvertimenti e avvisi. Specificarlo due volte per
              eliminare anche gli errori. Questa opzione non ha alcun effetto
              sullo stato di uscita. In altre parole, anche se un avvertimento
              e stato eliminato, lo stato di uscita che indica un avvertimento
              viene comunque utilizzato.

       -v, --verbose
              Sii prolisso. Se lo standard error e collegato a un terminale,
              xz visualizzera un indicatore di avanzamento. Specificando
              --verbose due volte si otterra un output ancora piu dettagliato.


              L'indicatore di avanzamento mostra le seguenti informazioni:

              o  La percentuale di avanzamento e mostrata se la dimensione del
                 file input e nota. Quindi, la percentuale non puo essere
                 mostrata nei pipe.

              o  Quantita di dati compressi prodotti (in compressione) o
                 utilizzati (in decompressione).

              o  Quantita di dati non compressi consumati (in compressione) o
                 prodotti (in decompressione).

              o  Rapporto di compressione, calcolato dividendo la quantita di
                 dati compressi processati finora con la quantita di dati non
                 compressi processati finora.

              o  Velocita di compressione o decompressione. Questa e misurata
                 come la quantita di dati non compressi consumati (in
                 compressione) o prodotti (in decompressione) al secondo.
                 Viene mostrata dopo che e trascorso qualche secondo da quando
                 xz ha iniziato a processare il file.

              o  Tempo trascorso nel formato M:SS o H:MM:SS.

              o  Il tempo residuo stimato e mostrato solo quando la dimensione
                 del file in ingresso e nota e sono gia passati un paio di
                 secondi da quando xz ha iniziato a processare il file. Il
                 tempo e mostrato in un formato meno preciso che non ha mai i
                 due punti, ad esempio 2 min 30 s.


              Quando lo standard error non e un terminale, --verbose fara
              stampare a xz il nome del file, la dimensione compressa, la
              dimensione non compressa, il rapporto di compressione, e potendo
              anche la velocita e il tempo trascorso, su una singola riga
              dello standard error, dopo aver compresso o decompresso il file.
              La velocita e il tempo trascorso sono inclusi solo se
              l'operazione e durata almeno un paio di secondi. Se l'operazione
              non e conclusa, ad esempio a causa dell'interruzione da parte
              dell'utente, viene stampata anche la percentuale di
              completamento, a patto che la dimensione del file input sia
              nota.

       -Q, --no-warn
              Non impostare lo stato di uscita a 2 anche se e stata rilevata
              una condizione che merita un avvertimento. Questa opzione non
              influisce sul livello di dettaglio, quindi sia --quiet che
              --no-warn devono essere utilizzati per non visualizzare
              avvertimenti e per non alterare lo stato di uscita.

       --robot
              Stampa i messaggi in un formato analizzabile dal computer.
              Questo ha lo scopo di facilitare la scrittura dei frontend che
              vogliono usare xz invece di liblzma, che potrebbe essere il caso
              di vari script. Si intende che con questa opzione abilitata
              l'output dovrebbe rimanere stabile tra le versioni di xz. Per
              ulteriori informazioni, vedere la sezione MODALITA ROBOT.

       --info-memory
              Mostra, in un formato leggibile da umani, quanta memoria fisica
              (RAM) e quante thread xz pensa che il sistema abbia e i limiti
              di utilizzo di memoria per la compressione e la decompressione,
              quindi termina con successo.

       -h, --help
              Mostra un messaggio di aiuto che descrive le opzioni usate piu
              comunemente, e termina con successo.

       -H, --long-help
              Mostra un messaggio di aiuto che descrive tutte le funzionalita
              di xz, e termina con successo

       -V, --version
              Mostra il numero di versione di xz e liblzma in un formato
              leggibile dagli umani. Per ottenere un output analizzabile da
              una macchina specificare --robot prima di --version.

MODALITA ROBOT
       La "modalita robot" viene attivata con l'opzione --robot. Rende
       l'output di xz piu facile da analizzare da altri programmi. Attualmente
       --robot e supportato solo insieme a --list, --filters-help,
       --info-memory e --version. In futuro sara supportato per la
       compressione e la decompressione.

   Modalita stampa
       xz --robot --list usa un output separato da tabulazione. La prima
       colonna di ogni riga contiene una stringa che indica il tipo di
       informazione contenuta in quella riga:

       name   Questa e sempre la prima riga quando si inizia a elencare un
              file. La seconda colonna della riga e il nome del file.

       file   Questa riga contiene informazioni generali sul file .xz. Questa
              riga viene sempre stampata dopo la riga name.

       stream Questo tipo di riga viene utilizzato solo quando e stato
              specificato --verbose. Sono presenti tante righe stream quanti
              sono i flussi nel file .xz.

       block  Questo tipo di riga viene utilizzato solo quando e stato
              specificato --verbose. Ci sono tante righe block quanti sono i
              blocchi nel file .xz. Le righe block vengono visualizzate dopo
              tutte le righe stream; i diversi tipi di riga non vengono
              interlacciati.

       summary
              Questo tipo di riga viene utilizzato solo quando --verbose e
              stato specificato due volte. Questa riga viene stampata dopo
              tutte le righe block. Come la riga file, la riga summary
              contiene informazioni generali sul file .xz.

       totals Questa riga e sempre l'ultima riga dell'output dell'elenco.
              Mostra i conteggi totali e le dimensioni.

       Le colonne delle righe file:
              2.  Numero di flussi nel file
              3.  Numero totale di blocchi nel flusso/i.
              4.  Dimensione compressa del file
              5.  Dimensione non compressa del file
              6.  Rapporto di compressione, es. 0.123. Se il rapporto e oltre
                  9999, al posto del rapporto vengono mostrati tre trattini
                  (---).
              7.  Elenco separato da virgole dei nomi dei controlli di
                  integrita. Le stringhe seguenti vengono utilizzate per i
                  tipi di controllo conosciuti: None, CRC32, CRC64, e SHA-256.
                  Per i tipi di controllo non conosciuti viene utilizzato
                  Unknown-N, dove N e l'ID del controllo come numero decimale
                  (una o due cifre).
              8.  Dimensione totale del padding del flusso nel file

       Le colonne delle righe stream:
              2.  Numero di flusso (il primo e 1)
              3.  Numero di blocchi nel flusso
              4.  Offset iniziale compressione
              5.  Offset iniziale decompressione
              6.  Dimensione compressa (non include il padding del flusso)
              7.  Dimensione non compressa
              8.  Rapporto di compressione
              9.  Nome del controllo di integrita
              10. Dimensione del padding del flusso

       Le colonne delle righe block:
              2.  Numero di flussi che contengono questo blocco
              3.  Numero del blocco relativo all'inizio del flusso (il primo
                  blocco e 1)
              4.  Numero del blocco relativo all'inizio del file
              5.  Offset iniziale compressione relativo all'inizio del file
              6.  Offset iniziale decompressione relativo all'inizio del file
              7.  Dimensione totale compressa del blocco (incluse le
                  intestazioni)
              8.  Dimensione non compressa
              9.  Rapporto di compressione
              10. Nome del controllo di integrita

       Se --verbose viene specificato due volte, sono incluse colonne
       aggiuntive nelle righe block. Queste non sono mostrate con un --verbose
       singolo, perche recuperare queste informazioni richiede molte ricerche
       e quindi puo essere lento:
              11. Valore del controllo di integrita in formato esadecimale
              12. Dimensione intestazione blocco
              13. Flag del blocco: cindica che e presente la dimensione
                  compressa, u indica che e presente la dimensione non
                  compressa. Se il flag non e impostato, viene mostrato un
                  trattino (-) per mantenere fissa la lunghezza della stringa.
                  Nuovi flag potrebbero essere aggiunti alla fine della
                  stringa in futuro.
              14. Dimensione dei dati compressi effettivi nel blocco (sono
                  esclusi l'intestazione del blocco, il padding del blocco e i
                  campi di controllo)
              15. Quantita di memoria (in byte) necessaria per decomprimere
                  questo blocco con questa versione xz
              16. Catena di filtri. Si noti che la maggior parte delle opzioni
                  utilizzate al momento della compressione non e nota, perche
                  solo le opzioni necessarie per la decompressione sono
                  memorizzate nelle intestazioni .xz.

       Le colonne delle righe summary:
              2.  Quantita di memoria (in byte) necessaria per decomprimere
                  questo file con questa versione xz
              3.  yes o no indica se tutte le intestazioni di blocco
                  contengono all'interno sia dimensioni compresse che
                  dimensioni non compresse
              A partire da xz 5.1.2alpha:
              4.  Versione minima di xz richiesta per decomprimere il file

       Le colonne delle righe totali:
              2.  Numero di flussi
              3.  Numero di blocchi
              4.  Dimensione compressa
              5.  Dimensione non compressa
              6.  Rapporto di compressione medio
              7.  Elenco separato da virgole dei nomi dei controlli di
                  integrita presenti nei file
              8.  Dimensione del padding dello stream
              9.  Numero di file. Questo serve a mantenere l'ordine delle
                  colonne precedenti uguale a quello delle righe del file.

       Se --verbose viene specificato due volte, sono incluse colonne
       aggiuntive nella riga totali:
              10. Quantita massima di memoria (in byte) necessaria per
                  decomprimere i file con questa versione xz
              11. yes o no indica se tutte le intestazioni di blocco
                  contengono all'interno sia dimensioni compresse che
                  dimensioni non compresse
              A partire da xz 5.1.2alpha:
              12. Versione minima di xz richiesta per decomprimere il file

       Versioni future potrebbero aggiungere nuovi tipi di riga e nuove
       colonne possono essere aggiunte ai tipi di riga esistenti, ma le
       colonne esistenti non verranno modificate.

   Aiuto sui filtri
       xz --robot --filters-help stampa i filtri supportati nel seguente
       formato:

       FILTRO:OPZIONE=<VALORE>,OPZIONE=<VALORE>...

       FILTRO Nome del filtro

       OPZIONE
              Nome di un'opzione specifica del filtro

       VALORE Gli intervalli del VALORE numerico appaiono come <MIN-MAX>. Le
              scelte per i VALORI stringa sono mostrati in < > e separati dal
              carattere |.

       Ogni filtro e mostrato su una riga dedicata.

   Informazione limite memoria
       xz --robot --info-memory stampa una singola riga con piu colonne
       separate da tabulazione:

       1.  Quantita totale di memoria fisica (RAM) in byte.

       2.  Limite utilizzo memoria per la compressione in byte
           (--memlimit-compress). Il valore speciale 0 indica l'impostazione
           predefinita, che in modalita thread singola equivale a nessun
           limite.

       3.  Limite utilizzo memoria per la decompressione in byte
           (--memlimit-decompress). Il valore speciale 0 indica l'impostazione
           predefinita, che in modalita thread singola equivale a nessun
           limite.

       4.  A partire da xz 5.3.4alpha: Utilizzo della memoria per la
           decompressione a thread multiple in byte
           (--memlimit-mt-decompress). Questo valore non e mai zero perche
           viene utilizzato un valore predefinito specifico del sistema
           mostrato nella colonna 5, se non e stato specificato alcun limite
           in modo esplicito. Inoltre, non e mai maggiore del valore nella
           colonna 3, anche se e stato specificato un valore maggiore con
           --memlimit-mt-decompress.

       5.  A partire da xz 5.3.4alpha: un limite di utilizzo della memoria
           predefinito specifico del sistema, che viene utilizzato per
           limitare il numero di thread durante la compressione con un numero
           automatico di thread (--threads=0) e non e stato specificato alcun
           limite di utilizzo della memoria (--memlimit-compress). Questo
           viene utilizzato anche come valore predefinito per
           --memlimit-mt-decompress.

       6.  A partire da xz 5.3.4alpha: Numero di thread del processore
           disponibili.

       In futuro, l'output di xz --robot --info-memory potrebbe avere piu
       colonne, ma mai piu di una singola riga.

   Versione
       xz --robot --version stampa il numero di versione di xz e liblzma nel
       seguente formato:

       XZ_VERSION=XYYYZZZS
       LIBLZMA_VERSION=XYYYZZZS

       X      Versione major.

       YYY    Versione minor. I numeri pari sono stabili. I numeri dispari
              sono versioni alfa o beta.

       ZZZ    Livello di patch per le versioni stabili o solo un contatore per
              le versioni di sviluppo.

       S      Stabilita. 0 e alfa, 1 e beta e 2 e stabile. S dovrebbe essere
              sempre 2 quando YYY e pari.

       XYYYZZZS sono uguali su entrambe le righe se xz e liblzma appartengono
       allo stesso rilascio delle XZ Utils.

       Esempi: 4.999.9beta e 49990091 e 5.0.0 e 50000002.

CODICE DI USCITA
       0      Tutto bene.

       1      E avvenuto un errore.

       2      Si e verificato qualcosa che merita un avvertimento, ma non si
              sono verificati errori effettivi.

       Gli avvisi (non gli avvertimenti o gli errori) stampati sullo standard
       error non influiscono sullo stato di uscita.

AMBIENTE
       xz analizza elenchi di opzioni separate da spazi dalle variabili
       d'ambiente XZ_DEFAULTS e XZ_OPT, in questo ordine, analizzando prima le
       opzioni dalla riga di comando. Si noti che solo le opzioni vengono
       analizzate dalle variabili d'ambiente; tutte le non-opzioni vengono
       ignorate silenziosamente. L'analisi viene eseguita con getopt_long(3)
       che viene utilizzato anche per gli argomenti della riga di comando.

       Attenzione: Impostando queste variabili di ambiente, si sta di fatto
       modificando programmi e script che lanciano xz.  La maggior parte delle
       volte va bene impostare i limiti di utilizzo della memoria, il numero
       di thread e le opzioni di compressione tramite variabili d'ambiente.
       Tuttavia, alcune opzioni possono rompere degli script.  Un esempio
       banale e --help che forza xz a mostrare la pagina di aiuto anziche
       comprimere o decomprimere file. Esempi meno ovvi sono --quiet e
       --verbose.  In molti casi funziona bene abilitare l'indicatore di
       avanzamento usando --verbose, ma in alcune situazioni i messaggi extra
       creano problemi.  Il livello di prolissita influisce anche sul
       comportamento di --list.

       XZ_DEFAULTS
              Opzioni predefinite specifiche dell'utente o a livello di
              sistema. In genere questo viene impostato in uno script di
              inizializzazione della shell per abilitare il valore predefinito
              del limitatore di utilizzo della memoria di xz, o per impostare
              il numero di thread predefinito. Escludendo gli script di
              inizializzazione della shell e analoghi casi particolari, gli
              script non dovrebbero mai impostare o annullare l'impostazione
              di XZ_DEFAULTS.

       XZ_OPT Questo serve per passare le opzioni a xz quando non sia
              possibile impostare le opzioni direttamente sulla riga di
              comando di xz. Questo e il caso quando xz viene eseguito da uno
              script o da uno strumento, ad esempio GNU tar(1):

                     XZ_OPT=-2v tar caf foo.tar.xz foo


              Gli script possono usare XZ_OPT, per esempio, per impostare
              opzioni di compressione predefinite specifiche per lo script. Si
              raccomanda comunque di permettere agli utenti di sovrascrivere
              XZ_OPTse questo e ragionevole. Ad esempio, negli script sh(1) si
              puo usare qualcosa come questo:

                     XZ_OPT=${XZ_OPT-"-7e"}
                     export XZ_OPT

COMPATIBILITA LZMA UTILS
       La sintassi della riga di comando di xz e essenzialmente un
       sopra-insieme di lzma, unlzma, e lzcat come trovati nelle LZMA Utils
       4.32.x. Nella maggior parte dei casi e possibili sostituire le LZMA
       Utils con le  XZ Utils senza rompere gli script esistenti. Ci sono pero
       alcune incompatibilita, che in alcuni casi potrebbero causare problemi.

   Livelli di compressione preimpostati
       La numerazione dei livelli di compressione preimpostati non e identica
       in xz e nelle LZMA Utils. La differenza piu importante e il modo in cui
       le dimensioni del dizionario vengono mappate sulle diverse
       preimpostazioni. La dimensione del dizionario e approssimativamente
       uguale all'utilizzo della memoria del decompressore.

              Livello     xz      LZMA Utils
                -0      256 KiB      N/A
                -1        1 MiB     64 KiB
                -2        2 MiB      1 MiB
                -3        4 MiB    512 KiB
                -4        4 MiB      1 MiB
                -5        8 MiB      2 MiB
                -6        8 MiB      4 MiB
                -7       16 MiB      8 MiB
                -8       32 MiB     16 MiB
                -9       64 MiB     32 MiB

       Le differenze di dimensione del dizionario influiscono anche
       sull'utilizzo della memoria del compressore, ma ci sono alcune altre
       differenze tra le LZMA Utils e le XZ Utils, che rendono la differenza
       ancora piu grande:

              Livello     xz      LZMA Utils 4.32.x
                -0        3 MiB          N/A
                -1        9 MiB          2 MiB
                -2       17 MiB         12 MiB
                -3       32 MiB         12 MiB
                -4       48 MiB         16 MiB
                -5       94 MiB         26 MiB
                -6       94 MiB         45 MiB
                -7      186 MiB         83 MiB
                -8      370 MiB        159 MiB
                -9      674 MiB        311 MiB

       Il livello preimpostato predefinito nelle LZMA Utils e -7 mentre nelle
       XZ Utils e -6, quindi entrambi utilizzano un dizionario da 8 MiB per
       impostazione predefinita.

   File .lzma con flussi vs. senza flussi
       La dimensione non compressa del file puo essere memorizzata
       nell'intestazione .lzma. Le LZMA Utils lo fanno durante la compressione
       di file regolari. L'alternativa consiste nel memorizzare che la
       dimensione non compressa e sconosciuta e utilizzare l'indicatore di
       fine carico utile per indicare il punto in cui il decompressore deve
       fermarsi. Le LZMA Utils utilizzano questo metodo quando le dimensioni
       non compresse non sono note, come nel caso, ad esempio, delle pipe.

       xz supporta la decompressione di file .lzma con o senza il marcatore di
       fine payload, ma tutti i file .lzma creati da xz utilizzeranno il
       marcatore di fine payload e avranno dimensioni non compresse
       contrassegnate come sconosciute nell'intestazione .lzma. Questo puo
       essere un problema in alcune situazioni non comuni. Ad esempio, un
       decompressore .lzma in un dispositivo embedded potrebbe funzionare solo
       con file con dimensioni non compresse note. Se si incorre in questo
       problema, occorre utilizzare le LZMA Utils oppure l'LZMA SDK per creare
       dei file .lzma con dimensioni non compresse note.

   File .lzma non supportati
       Il formato .lzma permette valori lc fino a 8, e valori lp fino a 4. Le
       LZMA Utils possono decomprimere file con qualunque lc e lp, ma
       creeranno sempre file con lc=3 e lp=0. Creare file con altri lc e lp e
       possibile con xz e con l'LZMA SDK.

       L'implementazione del filtro LZMA1 in liblzma richiede che la somma di
       lc e lp non debba superare 4. Pertanto, i file .lzma che superano
       questa limitazione non possono essere decompressi con xz.

       Le LZMA Utils creano solo file .lzma con dimensione del dizionario 2^n
       (una potenza di 2) ma accettano file con qualsiasi dimensione di
       dizionario. liblzma accetta solo file .lzma con dimensione del
       dizionario 2^n o 2^n + 2^(n-1). Questo serve a limitare i falsi
       positivi quando si cerca di identificare i file .lzma.

       All'atto pratico queste limitazioni non dovrebbero essere un problema,
       perche praticamente tutti i file .lzma sono stati compressi con
       impostazioni che liblzma accettera.

   Dati sporchi finali
       Quando si decomprime, le LZMA Utils ignorano automaticamente tutto
       quello che c'e dopo il primo flusso .lzma. Nella maggior parte delle
       situazioni questo e un baco. Questo significa anche che le LZMA Utils
       non supportano la decompressione di file .lzma concatenati.

       Se sono rimasti dati dopo il primo flusso .lzma, xz considera il file
       corrotto a meno che sia stato utilizzato --single-stream. Questo puo
       far rompere script incomprensibili che hanno assunto che i dati sporchi
       finali vengano ignorati.

NOTE
   L'output compresso puo variare
       L'esatto output compresso prodotto dallo stesso file di input non
       compresso puo variare tra le versioni delle XZ Utils, anche se le
       opzioni di compressione sono le stesse. Questo perche il codificatore
       puo essere stato migliorato (compressione piu veloce o migliore) senza
       influire sul formato del file. L'output puo variare anche tra diverse
       build della stessa versione delle XZ Utils, se vengono utilizzate
       opzioni di build differenti.

       Quanto sopra significa che una volta che --rsyncable e stato
       implementato, i file risultanti non saranno necessariamente rsync-abili
       a meno che sia i vecchi che i nuovi file non siano stati compressi con
       la stessa versione di xz. Questo problema puo essere risolto se una
       parte dell'implementazione del codificatore viene congelata per
       mantenere stabile l'output rsync-abile tra le versioni di xz.

   Abilita i decompressori .xz
       Le implementazioni dei decompressori .xz embedded, come XZ Embedded,
       non necessariamente supportano file creati con tipi di integrita
       CONTROLLO diversi da none e crc32. Dal momento che il valore
       predefinito e --check=crc64, occorre specificare --check=none o
       --check=crc32 quando si creano file per sistemi embedded.

       Al di fuori dei sistemi embedded, tutti i decompressori in formato .xz
       supportano tutti i tipi di CONTROLLO, o almeno sono in grado di
       decomprimere il file senza verificare il controllo di integrita se il
       particolare CONTROLLO non e supportato.

       XZ Embedded supporta i filtri BCJ, ma solo con offset iniziale
       predefinito.

ESEMPI
   Informazioni di base
       Comprime il file foo in foo.xz utilizzando il livello di compressione
       predefinito (-6) e rimuove foo se la compressione ha esito positivo:

              xz foo

       Decomprime bar.xz in bar e non rimuove bar.xz anche se la
       decompressione ha successo:

              xz -dk bar.xz

       Crea baz.tar.xz con il preset -4e (-4 --extreme), che e piu lenta della
       predefinita -6, ma ha bisogno di meno memoria per la compressione e
       decompressione (48 MiB e 5 MiB, rispettivamente):

              tar cf - baz | xz -4e > baz.tar.xz

       Una combinazione di file compressi e non compressi puo essere
       decompressa sullo output standard con un singolo comando:

              xz -dcf a.txt b.txt.xz c.txt d.txt.lzma > abcd.txt

   Compressione parallela di piu file
       Su GNU e *BSD, find(1)  e xargs(1) possono essere usati per
       parallelizzare la compressione di piu file:

              find . -type f \! -name '*.xz' -print0 \
                  | xargs -0r -P4 -n16 xz -T1

       L'opzione -p di xargs(1) imposta il numero di processi xz paralleli. Il
       valore migliore per l'opzione -n dipende dal numero di file da
       comprimere. Se sono presenti solo un paio di file, il valore dovrebbe
       probabilmente essere 1; con decine di migliaia di file, 100 o anche di
       piu puo essere appropriato per ridurre il numero di processi xz che
       xargs(1) alla fine creera.

       L'opzione -T1 per xz serve a forzare la modalita a thread singola,
       perche xargs (1) viene utilizzato per controllare la quantita di
       parallelizzazione.

   Modalita robot
       Calcola quanti byte sono stati salvati in totale dopo la compressione
       di piu file:

              xz --robot --list *.xz | awk '/^totals/{print $5-$4}'

       Uno script potrebbe voler sapere se si sta utilizzando una versione di
       xz sufficientemente recente. Il seguente script sh(1) controlla che il
       numero di versione dello strumento xz sia almeno 5.0.0. Questo metodo e
       compatibile con le vecchie versioni beta, che non supportavano
       l'opzione --robot:

              if ! eval "$(xz --robot --version 2> /dev/null)" ||
                      [ "$XZ_VERSION" -lt 50000002 ]; then
                  echo "Your xz is too old."
              fi
              unset XZ_VERSION LIBLZMA_VERSION

       Imposta un limite di utilizzo della memoria per la decompressione
       utilizzando XZ_OPT, ma se e gia stato impostato un limite, non lo
       aumenta:

              NEWLIM=$((123 << 20))  # 123 MiB
              OLDLIM=$(xz --robot --info-memory | cut -f3)
              if [ $OLDLIM -eq 0 -o $OLDLIM -gt $NEWLIM ]; then
                  XZ_OPT="$XZ_OPT --memlimit-decompress=$NEWLIM"
                  export XZ_OPT
              fi

   Catene di filtri di compressione personalizzate
       L'uso piu semplice delle catene di filtri personalizzate e la
       personalizzazione di un preset di LZMA2. Questo puo essere utile,
       perche i preset coprono solamente un sottoinsieme di tutte le
       combinazioni di impostazioni di compressione potenzialmente utili.

       Le colonne CompCPU delle tabelle dalle descrizioni delle opzioni -0 ...
       -9 e --extreme sono utili quando si personalizzano i preset di LZMA2.
       Di seguito sono riportate le parti rilevanti raccolte da queste due
       tabelle:

              Livello preimpostato   CompCPU
                      -0                0
                      -1                1
                      -2                2
                      -3                3
                      -4                4
                      -5                5
                      -6                6
                      -5e               7
                      -6e               8

       Se si sa che un file richiede un dizionario piuttosto grande (ad
       esempio, 32 MiB) per essere compresso bene, ma si desidera comprimerlo
       piu velocemente di quanto farebbe xz -8, e possibile modificare un
       preset con un basso valore CompCPU (ad esempio, 1) per utilizzare un
       dizionario piu grande:

              xz --lzma2=preset=1,dict=32MiB foo.tar

       Con alcuni file, il comando sopra potrebbe essere piu veloce di xz -6 e
       la compressione significativamente migliore. Tuttavia, si deve
       sottolineare che solo alcuni file traggono beneficio da un dizionario
       grande e mantengono basso il valore di CompCPU. La situazione piu ovvia
       in cui un dizionario grande puo aiutare molto e un archivio contenente
       file molto simili di almeno un paio di megabyte ciascuno. La dimensione
       del dizionario deve essere significativamente piu grande di ogni
       singolo file per permettere a LZMA2 di trarre pieno vantaggio dalle
       somiglianze tra file consecutivi.

       Se l'utilizzo molto elevato della memoria del compressore e del
       decompressore e accettabile, e il file da comprimere e almeno di
       diverse centinaia di megabyte, potrebbe essere utile utilizzare un
       dizionario ancora piu grande dei 64 MiB che xz -9 utilizzerebbe:

              xz -vv --lzma2=dict=192MiB big_foo.tar

       L'uso di -vv (--verbose --verbose) come nell'esempio precedente puo
       essere utile per vedere i requisiti di memoria del compressore e del
       decompressore. Tenere presente che l'utilizzo di un dizionario piu
       grande della dimensione del file non compresso e uno spreco di memoria,
       quindi il comando precedente non e utile per i file di piccole
       dimensioni.

       A volte il tempo di compressione non importa, ma l'utilizzo di memoria
       del decompressore deve essere tenuta bassa, per esempio, per permettere
       di decomprimere il file in un sistema embedded. Il comando seguente usa
       -6e (-6 --extreme)  come base e imposta il dizionario a soli 64 KiB. Il
       file risultante puo essere decompresso con XZ Embedded (ecco perche c'e
       --check=crc32) usando circa 100 KiB di memoria.

              xz --check=crc32 --lzma2=preset=6e,dict=64KiB foo

       Se si desidera spremere il maggior numero possibile di byte, a volte
       puo essere utile regolare il numero di bit di contesto letterale (lc) e
       il numero di bit di posizione (pb). Anche la regolazione del numero di
       bit di posizione letterale (lp) potrebbe essere d'aiuto, ma di solito
       lc e pb sono piu importanti. Per esempio, un archivio di codici
       sorgente contiene principalmente testo US-ASCII, quindi qualcosa come
       il seguente potrebbe produrre un file leggermente (0,1 %) piu piccolo
       di xz -6e (provare anche senza lc=4):

              xz --lzma2=preset=6e,pb=0,lc=4 source_code.tar

       Usare un altro filtro insieme a LZMA2 puo migliorare la compressione
       per alcuni tipi di file. Ad esempio, per comprimere una libreria
       condivisa x86-32 o x86-64 usare il filtro BCJ:

              xz --x86 --lzma2 libfoo.so

       Si noti che l'ordine delle opzioni di filtro e significativo. Se viene
       specificato --x86 dopo --lzma2, xz dara un errore, perche non puo
       esserci alcun filtro dopo LZMA2 e anche perche il filtro BCJ x86 non
       puo essere utilizzato come ultimo filtro della catena.

       Il filtro Delta insieme con LZMA2 puo dare buoni risultati sulle
       immagini bitmap. Di solito dovrebbe battere il PNG, il quale ha alcuni
       filtri piu avanzati rispetto al semplice delta ma utilizza Deflate per
       la compressione effettiva.

       L'immagine deve essere  salvata in un formato non compresso, ad esempio
       un TIFF non compresso. Il parametro distanza del filtro Delta e
       impostato in modo che corrisponda al numero di byte per pixel
       nell'immagine. Per esempio, un bitmap a 24 bit richiede dist=3, e va
       anche bene passare pb=0 a LZMA2 per adattarsi all'allineamento a tre
       byte:

              xz --delta=dist=3 --lzma2=pb=0 foo.tiff

       Se piu immagini sono state inserite in un singolo archivio (ad esempio,
       .tar), il filtro Delta funzionera anche su questo purche tutte le
       immagini abbiano lo stesso numero di byte per pixel.

VEDERE ANCHE
       xzdec(1), xzdiff(1), xzgrep(1), xzless(1), xzmore(1), gzip(1),
       bzip2(1), 7z(1)

       XZ Utils: <https://xz.tukaani.org/xz-utils/>
       XZ Embedded: <https://xz.tukaani.org/xz-embedded/>
       LZMA SDK: <https://7-zip.org/sdk.html>

Tukaani                           08/03/2025                             XZ(1)