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é.
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é.
Réponses:
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.
.tar.gz
...
cat filename | grep blah
stupide. 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.
fork()
.
gzip
fonctionne 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
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 -
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
gzip
ne l'est paszip
. Ce sont des outils différents qui fonctionnent différemment.