Introduzione
Il comando tar consente di creare e decomprimere archivi tar. Supporta una vasta gamma di programmi di compressione come gzip, bzip2, lzip, lzma, lzop, xz e compress.
Bzip2 è uno degli algoritmi più popolari per la compressione di file tar. Per convenzione, il nome di un archivio tar compresso con bzip2 termina con .tar.bz2 o .tbz2.
In questo tutorial, spiegheremo come estrarre (o decomprimere) gli archivi .tar.bz2 e .tbz2 usando il comando tar.
Estrazione dei file tar.bz2
La maggior parte delle distribuzioni Linux e macOS viene fornita con l' utilità tar preinstallata per impostazione predefinita.
Per estrarre un file tar.bz2, utilizzare l' opzione --extract (-x) e specificare il nome del file di archivio con l'opzione -f:
tar -xf archive.tar.bz2
Il comando tar rileva automaticamente il tipo di compressione ed estrae l'archivio. Lo stesso comando può essere utilizzato per estrarre archivi tar compressi con altri algoritmi come .tar.gz .
Se sei un utente Desktop e la riga di comando non fa per te, puoi utilizzare il tuo File manager. Per estrarre (decomprimere) un file tar.bz2, fare semplicemente clic con il tasto destro del mouse sul file che si desidera estrarre e selezionare “Estrai”. Gli utenti Windows avranno bisogno di installare uno strumento di estrazione, come ad esempio 7zip per estrarre i file tar.bz2.
Per un output più dettagliato utilizzare l'opzione -v. Questa opzione permette di visualizzare i nomi dei file estratti sul terminale.
tar -xvf archive.tar.bz2
Per impostazione predefinita, tar estrarrà il contenuto dell'archivio nella directory di lavoro corrente. Utilizzare il parametro --directory( -C) per estrarre i file di archivio in una directory specifica.
Ad esempio, per estrarre i contenuti dell'archivio nella directory /home/noviello/files, digitare:
tar -xf archive.tar.bz2 -C /home/noviello/files
Estrazione di file specifici da un file tar.bz2
Per estrarre uno o più file specifici da un file tar.bz2, aggiungi un elenco separato da spazi di nomi di file da estrarre dopo il nome dell'archivio:
tar -xf archive.tar.bz2 file1 file2
Quando si estraggono i file, è necessario fornire i nomi esatti incluso il percorso, che è possibile visualizzare con l'opzione --list( -t).
L'estrazione di una o più directory da un archivio equivale all'estrazione di più file:
tar -xf archive.tar.bz2 dir1 dir2
Se si tenta di estrarre un file che non esiste nell'archivio, verrà visualizzato un messaggio di errore simile al seguente:
tar -xf archive.tar.bz2 README
tar: README: Not found in archive
tar: Exiting with failure status due to previous errors
L' opzione --wildcards consente di estrarre i file da un file tar.bz2 in base a un modello wildcards. Il modello deve essere citato per impedire alla shell di interpretarlo.
Ad esempio, per estrarre solo i file i cui nomi finiscono in .md, dovresti usare:
tar -xf archive.tar.bz2 --wildcards '*.md'
Estrazione del file tar.bz2 dallo stdin
Quando si estrae un file tar.bz2 compresso leggendo l'archivio dall'input standard (di solito tramite piping), è necessario specificare l'opzione di decompressione. L'opzione -j serve per dichiarare che il file è compresso con bzip2.
Nell'esempio seguente stiamo scaricando i sorgenti di Vim usando il comando wget e reindirizzandone l'output al comando tar:
wget -c ftp://ftp.vim.org/pub/vim/unix/vim-8.1.tar.bz2 -O - | sudo tar -xj
Se non specifichi un'opzione di decompressione, tar ti mostrerà quale opzione dovresti usare:
tar: Archive is compressed. Use -j option
tar: Error is not recoverable: exiting now
Elencare i file tar.bz2
Per elencare il contenuto di un file tar.bz2, utilizzare l' opzione --list( -t):
tar -tf archive.tar.bz2
L'output sarà simile al seguente:
file1 file2
Se aggiungi l' opzione --verbose( -v), verranno stampate ulteriori informazioni, come il proprietario, la dimensione del file, il timestamp etc:
tar -tvf archive.tar.bz2
-rw-r--r-- nome_utente/nome_utente 1239291 2019-08-08 03:04 file1
-rw-r--r-- nome_utente/nome_utente 1239291 2019-08-08 03:04 file2
Conclusione
In questa guida abbiamo visto come estrarre i file tar.bz2 su Linux.