Créer une archive avec la commande "gzip"


11

Je dois créer une archive avec la commande gzip (pas tar - c'est nécessaire) et l'archive doit contenir des fichiers d'un autre répertoire - par exemple, / etc. J'ai essayé d'utiliser la commande

gzip myetc.gz /etc

Mais ça n'a pas marché.


3
gzipne l'est pas zip. Ce sont des outils différents qui fonctionnent différemment.
roaima

3
gzipest juste un compresseur de flux. Il ne connaît pas les fichiers ou répertoires.

3
Pourquoi ne pouvez-vous pas utiliser de goudron?
marcelm

Si vous n'avez pas de goudron, avez-vous du cpio?
Rup

2
Vous dites que vous voulez créer une archive, mais vous ne pouvez pas utiliser tar. Vous savez qu'une partie du mot "tar" vient de "ARchive". Je veux dire, c'est sa raison d'être. Qui ou quoi voudrait exclure "tar" d'un processus de création d'archives? Fondamentalement, vous demandez comment enfoncer une vis avec un marteau (pas un tournevis - c'est nécessaire).
Mike S

Réponses:


6

Gzip ne fonctionne qu'avec un seul fichier ou un flux - les données sont dirigées vers gzip. Vous devez donc d'abord générer un fichier, comme avec tar, puis vous pouvez le compresser. L'autre option consiste à compresser tous les fichiers individuels, puis à les tarer dans un seul fichier.

Ces deux solutions sont stupides et ne doivent pas être utilisées. Vous devez utiliser tar avec l'option de compression intégrée et tout faire en une seule commande.


1
Pourquoi la première méthode devrait-elle être stupide? C'est la façon habituelle de produire .tar.gz...
rexkogitans

Bien stupide n'est probablement pas le bon terme, mais au lieu d'utiliser gzip, si vous pouvez utiliser tar avec l'option c. C'est plus simple, et je ne pense pas que piping tar to gzip ait un avantage.
SPRBRN

Gzip peut fonctionner pour plusieurs fichiers avec l'option -r, mais créera un nouveau .gz pour chaque fichier du dossier.
Luciano Andress Martini

1
@rexkogitans - c'est stupide de la même manière que cat filename | grep blahstupide. Il est également beaucoup moins qu'optimal car il utiliserait un grand espace intermédiaire. Je ne sais pas si je dirais que c'est stupide autant que injustifié, sous-optimal et généralement juste un peu moche. Eh bien, les travaux stupides aussi.
Mike S

Oh, maintenant je vois ce qui est si stupide. Non, `tar -czf` est la voie à suivre car il n'implique pas d'inutile fork().
rexkogitans

13

gzipfonctionne avec des fichiers, pas avec des répertoires. Par conséquent, pour créer une archive d'un répertoire que vous devez utiliser tar(ce qui créera une archive tar unique à partir de plusieurs fichiers):

tar cvf myetc.tar /etc

ou, pour une archive gzippée:

tar cvzf myetc.tar.gz /etc

2
si l'on a un système "ancien" sans option "-z", ils peuvent faire: cd / ; tar cf - ./etc | gzip -c - > myetc.tar.gz (si vous vous demandez pourquoi je tar "./etc" au lieu de "/ etc", c'est parce que sur ces anciens systèmes, lors de l'utilisation de tar xvf, il sortira dans / etc et le remplacera ... [ou vous devez utiliser "pax" dans ce cas]). Commande inverse, c'est-à-dire extraire cette archive sous "/ quelque part": cd /somewhere ; gzip -dc < /the/location/of/myetc.tar.gz | tar xvf -
Olivier Dulac

1

Si vous n'avez vraiment pas tar disponible, vous pouvez utiliser gzip pour créer une sauvegarde d'un répertoire en utilisant l'option (-r - récursivement), mais ce n'est peut-être pas exactement ce que vous attendez ...

Vous devez d'abord copier votre répertoire sous un autre nom, si vous souhaitez conserver le répertoire d'origine intouchable.

#cp -a directory my_gzip_alone_backup

Deuxièmement, vous compresserez récursivement tous les fichiers du répertoire (-r).

#gzip -r my_gzip_alone_backup

Jetons maintenant un œil à l'intérieur de la sauvegarde my-gzip-alone. Vous n'aurez pas un seul fichier myfile.gz comme vous vous y attendez, mais beaucoup de fichiers gzip récursivement. Mais ce n'est pas bien de faire ça avec etc à cause des liens symboliques ...

Pour décompresser le répertoire, la même logique peut être appliquée avec gunzip.

Une autre façon est de convertir le répertoire en un seul fichier, si vous n'avez pas tar pour le faire, mais utilisez l'utilitaire dd, comme démontré dans cet article: /ubuntu/626634/converting-a -fichier vers répertoire

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.