Crea un archivio con il comando "gzip"


12

Devo creare un archivio con il comando gzip (non tar - è necessario) e l'archivio dovrebbe contenere file da un'altra directory - ad esempio / etc. Ho provato ad usare il comando

gzip myetc.gz /etc

Ma non ha funzionato.


3
gzipnon lo è zip. Sono strumenti diversi che funzionano in modo diverso.
roaima,

3
gzipè solo un compressore di flusso. Non conosce file o directory.

3
Perché non puoi usare tar?
marcelm

Se non hai tar, hai cpio?
Rup,

2
Dici di voler creare un archivio, ma non puoi usare tar. Sai che parte della parola "tar" deriva da "ARchive". Voglio dire, questa è la sua ragion d'essere. Chi o cosa vorrebbe escludere "tar" da un processo di creazione dell'archivio? Fondamentalmente stai chiedendo come guidare una vite con un martello (non un cacciavite - è necessario).
Mike S,

Risposte:


6

Gzip funziona solo con un singolo file o un flusso - dati inviati a gzip. Quindi devi prima generare un file, come con tar, e poi puoi comprimerlo. L'altra opzione è quella di decomprimere tutti i singoli file, quindi tar in un unico file.

Entrambe queste soluzioni sono stupide e non dovrebbero essere utilizzate. Dovresti usare tar con l'opzione di compressione integrata e fare tutto in un solo comando.


1
Perché il primo metodo dovrebbe essere stupido? Questo è il solito modo di produrre .tar.gz...
rexkogitans

Beh, stupido probabilmente non è il termine giusto, ma invece di usare gzip, se puoi usare tar con l'opzione c. È più semplice e non credo che il piping di tar su gzip abbia un vantaggio.
SPRBRN,

Gzip può funzionare per più file con l'opzione -r, ma creerà un nuovo .gz per ogni file nella cartella.
Luciano Andress Martini,

1
@rexkogitans - è stupido allo stesso modo che cat filename | grep blahè stupido. È anche molto meno che ottimale perché utilizzerebbe un ampio spazio intermedio. Non so se lo definirei stupido quanto ingiustificato, non ottimale e in genere solo brutto. Beh, anche gli stupidi funzionano.
Mike S,

Oh, ora vedo cosa c'è di così stupido. No, `tar -czf` è la strada da percorrere in quanto non comporta un inutile fork().
rexkogitans,

13

gzipfunziona con i file, non con le directory. Pertanto, per creare un archivio di una directory è necessario utilizzare tar(che creerà un singolo tarball da più file):

tar cvf myetc.tar /etc

oppure, per un archivio compresso con zip:

tar cvzf myetc.tar.gz /etc

2
se uno ha un sistema "antico" senza l'opzione "-z", può fare: cd / ; tar cf - ./etc | gzip -c - > myetc.tar.gz (se ti stai chiedendo perché tar "./etc" invece di "/ etc", è perché su quei sistemi più vecchi, quando si usa tar xvf, verrà emesso in / etc e sovrascritto ... [oppure devi usare "pax" in quel caso]). Comando inverso, ovvero estrarre quell'archivio sotto "/ da qualche parte": cd /somewhere ; gzip -dc < /the/location/of/myetc.tar.gz | tar xvf -
Olivier Dulac

1

Se davvero non hai tar disponibile, puoi usare gzip per creare un backup di una directory usando l'opzione (-r - ricorsivamente), ma forse non è esattamente quello che ti aspetti ...

Per prima cosa dovrai copiare la tua directory con un altro nome, se vuoi mantenere intoccabile la directory originale.

#cp -a directory my_gzip_alone_backup

In secondo luogo, comprimerai tutti i file nella directory in modo ricorsivo (-r).

#gzip -r my_gzip_alone_backup

Ora diamo un'occhiata all'interno di my-gzip-alone-backup. Non avrai un singolo file myfile.gz come ti aspetti, ma molti file gziped ricorsivamente. Ma non è bene farlo con etc a causa dei symlink ...

Per decomprimere la directory è possibile applicare la stessa logica con gunzip.

Un altro modo è convertire la directory in un singolo file, se non hai tar per farlo, ma hai il dd util, come dimostrato in questo post: /ubuntu/626634/converting-a -file-to-directory

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.