Comando per 'gzip' una cartella?


66

Sono nuovo di roba al prompt dei comandi di Mac. Come si crea un gzip di una cartella in Mac OS X? Alcune persone mi hanno detto che se si desidera creare un gzip di una cartella, è necessario prima "tar" e poi "gzip". È corretto?


1
Questa non è una domanda di programmazione? Il tuo post è taggato con objective-cma stai chiedendo della riga di comando.
rakuo15,

Risposte:


130

Tar è lo strumento di archiviazione e gzip è lo strumento di compressione. Per comprimere una directory completa, devi prima archiviarla in un singolo file. Questo è ciò che il lavoro è tar. e quindi comprimi il file archiviato. È possibile eseguire entrambe le attività in un singolo comando tar con l'opzione appropriata.

tar -czf nome_cartella.tar.gz nome_cartella /

Se non vuoi creare un archivio tar (potresti voler comprimere solo un singolo file), puoi usare direttamente il comando gzip.

gzip file.txt

Creerà un file compresso chiamato file.txt.gz


30
Vale la pena ricordare quali sono le opzioni -czfdopo tarsono per: cindica che si desidera creare un archivio tar, zsi applica gzipsulla tar intermedio, e fè per il successivo nome del file finale folder_name.tar.gz.
fideli,

13
Attenzione: gzip file.txtsostituisce il file originale.
Zoltán,

6
@ Zoltán Utilizzare gzip -k file.txtper "mantenere" (non eliminare) il file di input.
thohl

13

Se qualcuno sta ancora trovando questa domanda durante la ricerca di "gzip in Mac", ho scritto una guida che potrebbe essere utile a qualcun altro. Eccolo:

Compressione

Il comando più semplice comprime il file filename.exte lo sostituisce con filename.ext.gznella stessa directory.

gzip filename.ext

Se non si desidera perdere il file originale, è necessario reindirizzare l'output di gzip -cun file.

gzip -c filename.ext > anotherfile.gz

Possiamo anche comprimere dall'input standard, quindi possiamo comprimere l'output di altri comandi.

cat filename.ext | gzip > anotherfile.gz

OS X include anche i comandi compresse uncompress. Fanno un gzip "più intelligente", in quanto non comprime il file se crescesse dopo il processo di compressione. Il seguente comando sostituisce filename.extcon filename.ext.Znella stessa directory.

compress filename.ext

decompressione

Per ripristinare un file allo stato naturale non compresso è possibile utilizzare gzip o altri wrapper. La modalità di decompressione di gzip è chiamata con la -dbandiera. Questa modalità sostituirà il file filename.ext.gzcon filename.extnella stessa directory. C'è anche una scorciatoia chiamata gunzipche farà lo stesso.

gzip -d filename.ext.gz
gunzip filename.ext.gz

Possiamo anche reindirizzare il file decompresso all'output standard per salvarlo in un altro file.

gzip -cd filename.ext.gz > anotherfile
gunzip -c filename.ext.gz > anotherfile

Un altro modo rapido di leggere il contenuto di un gzip sull'output standard è zcat, sostanzialmente è lo stesso della chiamata, gzip -cdma è possibile chiamare più file e farli concatenare allo stesso modo in cui il catcomando concede i file di testo. L'unico inconveniente è che i tuoi file devono essere suffissi con il .Zsuffisso affinché funzioni ...

zcat filename.ext.Z
zcat file_a.Z file_b.Z file_c.Z

Ma non temere! zcatè ancora utile, perché può decomprimersi dall'output standard. Quindi puoi fondamentalmente reindirizzare i tuoi file su zcat per farli decomprimere sulla finestra del terminale.

cat filename.ext.gz | zcat

Questo è molto utile se hai bisogno di controllare il contenuto di un file molto velocemente e puoi anche salvare l'output di zcat in un file, altrettanto facile.

cat filename.ext.gz | zcat > anotherfile

Il uncompresswrapper funziona come gzip -cdma cerca i file con estensione .Z per sostituirli nella directory corrente, quindi devi solo specificare il nome del file che vuoi ripristinare, ma va bene se lo chiami con l'estensione .Z, come il programma lo ignorerà.

compress filename.ext
uncompress filename.ext

Spero che trovi utile la mia guida :)


4

MacOS X è Unix quindi dovrebbe funzionare (funziona su GNU / Linux)

cartella tar czvf compressed.tar.gz

3

Sì, devi prima tar la directory. Il comando tar può fare entrambe le cose:

tar -czf archiv.tar.gz mydir/

estrai il tuo archivio:

tar -xzf archiv.tar.gz

3

Per aggiungere alla risposta di @taskinoor: se si utilizza la versione a file singolo, ovvero

gzip file.txt

tieni presente che il file originale (file.txt) verrà rimosso e avrai solo file.txt.gz

Vorrei mettere questo come commento ma non ho abbastanza karma per farlo: =)


1
gzip --keep file.txtmanterrà l'originale e creare file.txt.gz. Vedere gzip --help.
Blaise,

1

Sì, questo è corretto. gzippuò solo comprimere un file. tarcodifica il contenuto della directory in un unico file, che può essere ulteriormente compresso usando gzip, bzip2, lzmao qualsiasi altra cosa.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.