Comando xz in Linux: comprimere .xz, conservare e verificare i file
xz comprime i file nel formato .xz e, dopo il successo, normalmente rimuove l’originale. Usa -k per conservarlo oppure -c per inviare il risultato allo standard output con un nome scelto da te.
XZ comprime i singoli file: per conservare più file e la struttura delle directory in un unico archivio, combinalo con tar. Il livello di compressione e il numero di thread influiscono sulle risorse richieste; il valore massimo non è sempre la scelta adatta.
Sintassi e preparazione
xz [option] [file...]
Sostituisci i segnaposto con opzioni e file reali. Controlla xz --version e man xz sul sistema: versione e configurazione possono modificare i valori predefiniti. Prepara un file di prova leggibile, ad esempio database.sql, una directory scrivibile e spazio per il risultato. Non usare l’unica copia di dati importanti.
Gli esempi seguenti illustrano alternative. Prima di ripetere una prova verifica quali file sono rimasti e usa nomi di destinazione liberi. XZ normalmente segnala un errore e salta il file se il nome di uscita esiste già: non fare affidamento su una richiesta di conferma e non aggiungere automaticamente -f, che può eliminare il risultato esistente.
Comprimere conservando l’originale o scegliendo un altro nome
Conservare il file di partenza. Questo comando crea database.sql.xz e mantiene database.sql grazie a -k:
xz -k database.sql
Salvare con un nome diverso. Con -c il compresso va allo standard output e la sorgente rimane. La shell lo scrive nel file indicato dopo >:
xz -c database.sql > database-copy.sql.xz
Controlla prima che database-copy.sql.xz non contenga dati da conservare. La redirezione può troncare un file esistente prima che XZ inizi, quindi la protezione ordinaria di XZ contro le sovrascritture non protegge quel nome. Non usare il file di input anche come destinazione e non inviare dati compressi direttamente al terminale.
Verificare il compresso e provare il ripristino
Il test legge il compresso e scarta i dati decompressi senza creare un file ripristinato né rimuovere l’input:
xz -t database.sql.xz
Quando il controllo riesce, normalmente non appare alcun messaggio. Valuta subito lo stato del comando: in una shell POSIX puoi usare echo $? prima di eseguire altro. Lo stato 0 indica successo, 1 un errore e 2 un avvertimento senza un errore vero e proprio. Leggi comunque il messaggio: l’assenza di output da sola non sostituisce il controllo dello stato.
Il test verifica l’integrità del flusso, non l’autenticità o la correttezza del contenuto SQL. Per un controllo completo del tuo salvataggio, puoi ripristinare in un nome nuovo con xz -dc database.sql.xz > restored-database.sql e confrontare i byte con la sorgente corretta, per esempio usando cmp. Anche qui controlla prima il nome di destinazione e non considerare completo un output parziale dopo un errore.
Per ripetere il piccolo esempio seguente, crea prima un note.txt con testo noto in una directory di prova dove note.txt.xz non esiste:
xz -k note.txt
xz -t note.txt.xz
ls note.txt*
Esempio di elenco finale:
note.txt note.txt.xz
L’elenco dimostra la presenza dei due nomi; l’impaginazione può variare. Per conoscere lo stato del test devi controllarlo immediatamente dopo xz -t, prima di ls: dopo l’elenco, $? riguarda invece ls.
In una prova locale del 3 novembre 2026 con XZ Utils 5.8.3 di Git for Windows, sono stati verificati il mantenimento della sorgente con -k e -c, il test silenzioso con stato 0, il ripristino degli stessi byte con xz -dc, la rimozione della sola sorgente di prova con la modalità normale e il rifiuto di un output già presente. L’esempio note.txt ha lasciato entrambi i file; una copia del compresso alterata è stata rifiutata dal test. Le prove non verificano metadati Linux, sicurezza di dati non affidabili o prestazioni.
Opzioni, livelli e thread
| Opzione | Funzione e limite |
|---|---|
-k |
Conserva i file di input elaborati. |
-c |
Scrive allo standard output e conserva l’input; controlla separatamente la redirezione della shell. |
-t |
Verifica l’integrità del compresso senza creare un file decompresso. |
-0 ... -9 |
Sceglie un livello di compressione; livelli più alti possono richiedere più tempo e memoria. |
-T numero |
Imposta il numero richiesto di thread; il numero effettivo può essere minore. |
Con -T1 scegli la modalità a thread singolo; -T2 richiede fino a due thread di lavoro e -T0 usa una selezione automatica legata alle capacità del sistema. File piccoli e limiti di memoria possono ridurre il parallelismo effettivo. Il manuale corrente indica un valore predefinito di 0, mentre per XZ 5.4.x e precedenti era 1: specifica il valore quando questa distinzione conta.
Nella stessa prova Windows, le uscite ottenute con -T1, -T2 e -T0 hanno tutte restituito i byte originali. Questa verifica di correttezza non misura il numero di thread effettivamente attivi né dimostra una maggiore velocità.
Un livello elevato come -9 aumenta anche i requisiti della decompressione. -9e aggiunge una ricerca più lenta al livello scelto: non garantisce un file più piccolo e non va interpretato come un livello di sicurezza. Valuta dimensione, tempo e memoria disponibili anche sul dispositivo che dovrà ripristinare i dati; per confrontare impostazioni usa la stessa sorgente, nomi diversi e un controllo completo del risultato.
Archivi, spazio e gestione degli errori
Un .xz non è un archivio di più file. Specificare più input a xz normalmente produce un compresso separato per ciascuno. Per un archivio .tar.xz, tar può combinare archiviazione e compressione con tar -cJf; servono anche il nome dell’archivio e i percorsi da includere, come spiegato nella guida a tar.
La modalità normale rimuove la sorgente dopo che l’output è stato completato con successo. Mantieni una copia valida finché non hai verificato compressione e ripristino. Se il lavoro fallisce, controlla spazio, permessi, nome di uscita e messaggi; riprova su una copia in una directory separata invece di forzare una sovrascrittura.
La compressione non cifra i dati e un controllo di integrità riuscito non dimostra chi li abbia prodotti. Non eseguire automaticamente contenuti ricevuti da fonti non affidabili; prevedi spazio sufficiente per il file ripristinato, che può essere molto più grande del compresso.
Domande frequenti
Qual è la differenza tra .xz e .tar.xz?
Un .xz contiene normalmente il flusso compresso di un file. Un .tar.xz contiene invece un archivio tar, eventualmente con più file e directory, compresso con xz. Rimuovere solo lo strato xz lascia il tar da estrarre.
Perché xz -t non mostra alcun risultato?
Il successo è normalmente silenzioso. Controlla subito lo stato di uscita e leggi eventuali errori; l’elenco dei nomi creati non verifica i dati e non sostituisce il test.
Documentazione ufficiale
Il manuale ufficiale di xz descrive opzioni, thread, memoria e stati di uscita. Confrontalo con il manuale della versione installata prima di scegliere impostazioni avanzate.




