GNU/Linux >> Linux Esercitazione >  >> Linux

Come archiviare e comprimere file su Linux

In qualità di amministratore di sistema, potresti aver scaricato alcuni archivi che devi estrarre per rivelare i loro file.

Potresti anche eseguire il backup di un intero database composto da un'ampia varietà di piccoli file che vuoi aggregare in un unico archivio.

Archiviazione e compressione di file sono operazioni comuni nel mondo Unix, eseguite regolarmente dagli amministratori di sistema.

Fortunatamente per te, Linux espone una serie di comandi diversi per archiviare, comprimere, decomprimere ed estrarre file da un archivio.

In questo tutorial imparerai di più sul comando tar e sui diversi metodi di compressione che possono essere utilizzati per risparmiare spazio su Linux.

Pronto?

Archivia i file su Linux usando tar

Catrame è un comando molto popolare tra gli amministratori di sistema.

A volte indicato come tarball , tar è stato storicamente utilizzato per scrivere dati su dispositivi che all'epoca non disponevano di file system.

Di conseguenza, nel 1979 è stato introdotto il comando tar per sostituire "tp ” programma utilizzato all'epoca.

Al giorno d'oggi, il comando tar è ampiamente utilizzato per archiviare file (ovvero mettere insieme file in un unico archivio).

Per archiviare i file su Linux usando tar, esegui “tar ” con il “cvf " opzioni.

$ tar -cvf archive.tar file1 file2 directory1 directory2

file1/
file2/
directory1/
directory2/

In questo caso, abbiamo utilizzato tre diverse opzioni:

  • -c :per creare archivio, un'opzione abbastanza autoesplicativa se vuoi creare un nuovo archivio composto dai file selezionati;
  • -v :per verbose, questo è il motivo per cui il comando mostra i file aggiunti all'archivio durante l'esecuzione;
  • -f :per file, questa opzione serve per specificare il nome del file dell'archivio che vogliamo creare (in questo caso archive.tar)

Queste opzioni sono probabilmente le opzioni più importanti per l'archiviazione di file su Linux.

Quando si esegue il comando tar con il flag "-f", è stato creato un nuovo archivio nella directory di lavoro corrente.

$ ls -l
total 20
-rw-rw-r-- 1 schkn schkn 10240 Nov  9 10:41 archive.tar
drwxrwxr-x 2 schkn schkn  4096 Nov  9 10:41 directory1
drwxrwxr-x 2 schkn schkn  4096 Nov  9 10:41 directory2
-rw-rw-r-- 1 schkn schkn     0 Nov  9 10:41 file1
-rw-rw-r-- 1 schkn schkn     0 Nov  9 10:41 file2

Come puoi vedere, la dimensione dell'archivio è maggiore della somma dei file in esso contenuti.

Perché?

La creazione di un archivio tar non mette semplicemente file e directory in una grande scatola:un archivio è anche un file speciale composto da intestazioni di file speciali che possono richiedere una notevole quantità di spazio.

Di conseguenza, il tuo archivio è molto più grande della somma dei file in esso contenuti.

Questo è un fatto molto importante perché siamo in grado di capire che l'archiviazione dei file non significa che i tuoi file siano compressi al loro interno.

Per comprimere i file durante l'archiviazione, devi fornire altre opzioni al comando tar.

La compressione dei file verrà spiegata nei prossimi capitoli.

Estrai i file usando tar su Linux

Ora che hai creato un file di archivio, potresti voler estrarre i file che si trovano nel tuo archivio.

Per estrarre i file usando il comando tar, aggiungi “-x ” invece dell'opzione iniziale “-c”.

$ tar -xvf archive.tar

file1
file2
directory1/
directory2/

Tieni presente che l'estrazione dei file non significa che l'archivio verrà eliminato dalla directory di lavoro corrente.

$ ls -l

total 28
-rw-rw-r-- 1 schkn schkn 10240 Nov  9 12:01 archive.tar
drwxrwxr-x 2 schkn schkn  4096 Nov  9 10:41 directory1
drwxrwxr-x 2 schkn schkn  4096 Nov  9 10:41 directory2
-rw-rw-r-- 1 schkn schkn     0 Nov  9 12:00 file1
-rw-rw-r-- 1 schkn schkn     0 Nov  9 10:41 file2

Quando si estraggono file su Linux, c'è un piccolo problema di cui devi essere a conoscenza.

Se un file nella directory di lavoro corrente ha lo stesso nome di un file all'interno dell'archivio, il contenuto del file nella directory di lavoro verrà sostituito con quello dell'archivio.

Per illustrarlo, aggiungi del contenuto a uno dei tuoi file, estrai i tuoi file e controlla nuovamente il contenuto del tuo file.

$ echo "Added some content to the file" > file1

$ tar -xvf archive.tar

$ cat file1
<empty>

Confronto di file locali con file di archivio

Per evitare che i dati vengano cancellati durante il processo, il comando tar può confrontare i file che si trova nella tua attuale directory di lavoro con i file nel tuo archivio.

Tornando all'esempio di cui abbiamo discusso in precedenza, aggiungiamo alcuni contenuti al file "file1".

$ echo "Added some content to the file" > file1

Per confrontare i file con tar, usa l'opzione “-d”.

$ tar -dvf archive.tar

file1
file1: Mod time differs
file1: Size differs
file2
directory1/
directory2/

Come puoi vedere, tar confronterà timestamp e più precisamente la ultima data di modifica del file.

Se la data di modifica del file locale è più recente di quella del file di archivio, il comando tar visualizzerà un avviso che mostra che l'ora di modifica è diversa.

Allo stesso modo, tar può controllare le dimensioni dei file ed evidenziare le differenze di dimensione tra i tuoi file.

Per evitare di cancellare i tuoi file, puoi utilizzare la asterisco comando che è un'ottima alternativa al comando tar esistente.

Impedisci la sovrascrittura dei file usando la stella

Per impostazione predefinita, l'utility star potrebbe non essere installata sul tuo sistema.

Per installare l'utility star, esegui l'utility YUM

$ sudo yum install star

Quindi, per archiviare i file con star, esegui semplicemente "star" con l'opzione "-c".

$ star -c -f=archive.tar file1 file2

Quindi, puoi utilizzare l'utilità gzip o gunzip per comprimere il tuo nuovo archivio.

$ gzip archive.tar

Di conseguenza, il file tar iniziale verrà trasformato in un archivio tar.gz.

Ora, se dovessi creare un file con lo stesso identico nome, l'utility star non lo sovrascriverebbe per impostazione predefinita.

$ echo "This is some content" > file1

$ gzip -d archive.tar.gz

$ star -x -f=archive.tar
star: current 'file1' newer.
star: current 'file2' newer.
star: 1 blocks + 0 bytes (total of 10240 bytes = 10.00k).

$ cat file1
This is some content

Molto utile quando hai paura di perdere i tuoi contenuti!

Compressione di file utilizzando gzip su Linux

Ora che hai il tuo archivio tar pronto, il passaggio successivo è comprimerlo per ridurne le dimensioni.

Per questo, utilizzeremo prima gzip utilità.

Per impostazione predefinita, l'utilità gzip dovrebbe essere installata, ma in caso contrario, assicurati di installarla a seconda della tua distribuzione.

$ sudo apt-get install gzip

$ sudo yum install gzip

Ora che gzip è installato, esegui "gzip" e passa l'archivio che hai appena creato come argomento.

$ gzip archive.tar

L'esecuzione del comando gzip creerà un tar.gz file nella directory di lavoro corrente.

Ancora più importante, il file tar iniziale verrà aggiornato a tar.gz in modo da non avere più l'archivio iniziale.

$ ls -l
total 12
-rw-rw-r-- 1 schkn schkn  184 Nov  9 10:41 archive.tar.gz
drwxrwxr-x 2 schkn schkn 4096 Nov  9 10:41 directory1
drwxrwxr-x 2 schkn schkn 4096 Nov  9 10:41 directory2
-rw-rw-r-- 1 schkn schkn    0 Nov  9 10:41 file1
-rw-rw-r-- 1 schkn schkn    0 Nov  9 10:41 file2

Come puoi vedere, la dimensione del file è stata drasticamente ridotta da 10 Kb a 184 byte, gzip ha ridotto la dimensione del file di oltre il 98%.

Tuttavia, se non desideri utilizzare l'utilità gzip, puoi anche comprimere i file utilizzando il comando tar con le opzioni.

Pensi che possa migliorare il tasso di compressione?

Compressione di file su Linux usando tar

Come accennato nella prima sezione, il comando tar può essere utilizzato per archiviare e comprimere file in una riga.

Per comprimere i file con tar, aggiungi semplicemente il “-z” opzione al tuo attuale insieme di opzioni.

$ tar -cvzf archive1.tar.gz file1 file2 directory1 directory2

Analogamente al primo comando tar che hai eseguito, un nuovo file di archivio compresso verrà creato nella tua directory di lavoro corrente.

Per ispezionare i file creati, esegui di nuovo il comando "ls".

$ ls -l
total 28
-rw-rw-r-- 1 schkn schkn   184 Nov  9 10:41 archive.tar.gz
-rw-rw-r-- 1 schkn schkn   172 Nov  9 11:10 archive1.tar.gz
drwxrwxr-x 2 schkn schkn  4096 Nov  9 10:41 directory1
drwxrwxr-x 2 schkn schkn  4096 Nov  9 10:41 directory2
-rw-rw-r-- 1 schkn schkn     0 Nov  9 10:41 file1
-rw-rw-r-- 1 schkn schkn     0 Nov  9 10:41 file2

Ora come puoi vedere, l'archivio compresso creato è leggermente più leggero di quello creato con gzip.

Compressione di file utilizzando bzip2

Il più delle volte, il comando gzip viene utilizzato per comprimere file o archivi.

Tuttavia, questo non è storicamente l'unico metodo di compressione disponibile nell'ingegneria del software:puoi anche usare bzip2.

La principale differenza tra gzip e bzip2 sta nel fatto che gzip utilizza l'algoritmo di compressione LZ77 mentre bzip2 utilizza l'algoritmo Burrows-Wheeler .

Bzip2 è noto per essere molto più lento dell'algoritmo gzip, tuttavia in alcuni casi può essere utile sapere come comprimere usando bzip2.

Per comprimere i file utilizzando bzip2, esegui semplicemente "bzip2" con il nome del file che desideri comprimere.

$ bzip2 archive.tar

Per decomprimere i file compressi usando bzip2, aggiungi semplicemente l'opzione "-d" al tuo comando.

$ bzip -d archive.tar.bz2

In alternativa, puoi creare archivi bz2 usando il comando tar e specificando l'opzione “-j”.

$ tar -cjf archive.tar.gz2 file1 file2

Usando tar, hai la possibilità di comprimere usando un ampio pannello di diversi metodi di compressione:

  • -j :comprime un file usando il metodo di compressione bz2;
  • -J :usa l'utilità di compressione xz;
  • –lzip :usa l'utilità di compressione lzip;
  • –lzma :usa l'utilità di compressione lzma;
  • –lzop :usa lzop per comprimere i file
  • -z :equivalente all'utilità gzip o gunzip.

Conclusione

In questo tutorial hai imparato come archiviare e comprimi file utilizzando l'utilità tar su Linux.

Hai anche appreso i diversi metodi di compressione disponibili e come possono essere utilizzati per ridurre le dimensioni dei tuoi file e directory.

Se sei curioso dell'amministrazione del sistema Linux, abbiamo una sezione completa ad essa dedicata sul sito Web, quindi assicurati di dare un'occhiata.


Linux
  1. Come archiviare file e directory in Linux [Parte 2]

  2. Come estrarre i file .gz e .tar.gz in Linux

  3. Come comprimere ed estrarre file usando il comando tar su Linux?

  4. Come comprimere ed estrarre file e directory in Linux usando gzip e bzip2

  5. Come comprimere e decomprimere file .bz2 in Linux usando il comando bzip2

Come comprimere file e directory in Linux

Come copiare file e directory in Linux

Pigz:comprimi e decomprimi file in parallelo in Linux

Come installare Rclone in Linux e Unix

Comando tar di Linux – Come comprimere file in Linux

Come installare e utilizzare Pigz per comprimere i file più velocemente in Linux