Cree un archivo con el comando "gzip"

11

Tengo que crear un archivo con el comando gzip (no tar, es necesario) y el archivo debe contener archivos de otro directorio, por ejemplo, / etc. Traté de usar el comando

gzip myetc.gz /etc

Pero no funcionó.

Elisia Light
fuente
3
gzipno es zip. Son herramientas diferentes que funcionan de manera diferente.
roaima
3
gzipEs solo un compresor de corriente. No sabe sobre archivos o directorios.
3
¿Por qué no puedes usar alquitrán?
marcelm
Si no tienes alquitrán, ¿tienes cpio?
Rup
2
Dices que quieres crear un archivo, pero no puedes usar tar. Usted sabe que parte de la palabra "alquitrán" proviene de "ARchive". Quiero decir, esa es su razón de ser. ¿Quién o qué querría excluir "tar" de un proceso de creación de archivo? Básicamente, se pregunta cómo clavar un tornillo con un martillo (no un destornillador, es necesario).
Mike S

Respuestas:

6

Gzip solo funciona con un solo archivo o una secuencia: datos canalizados a gzip. Por lo tanto, primero debe generar un archivo, como con tar, y luego puede descomprimirlo. La otra opción es comprimir todos los archivos individuales y luego guardarlos en un solo archivo.

Ambas soluciones son estúpidas y no deben usarse. Debe usar tar con la opción de compresión integrada y hacerlo todo en un comando.

SPRBRN
fuente
1
¿Por qué el primer método debe ser estúpido? Esta es la forma habitual de producir .tar.gz...
rexkogitans
Bueno, estúpido probablemente no sea el término correcto, pero en lugar de usar gzip, si puedes usar tar con la opción c. Es más simple, y no creo que el alquitrán de gzip tenga una ventaja.
SPRBRN
Gzip puede funcionar para múltiples archivos con la opción -r, pero creará un nuevo .gz para cada archivo en la carpeta.
Luciano Andress Martini
1
@rexkogitans: es estúpido de la misma manera que cat filename | grep blahes estúpido. También es mucho menos que óptimo porque usaría un gran espacio intermedio. No sé si lo llamaría estúpido tanto como injustificado, subóptimo y, en general, un poco feo. Bueno, la estupidez también funciona.
Mike S
Oh, ahora veo lo que es tan estúpido. No, `tar -czf` es el camino a seguir, ya que no implica un inútil fork().
rexkogitans
13

gzipfunciona con archivos, no directorios. Por lo tanto, para crear un archivo de un directorio que necesita usar tar(que creará un único tarball de múltiples archivos):

tar cvf myetc.tar /etc

o, para un archivo comprimido:

tar cvzf myetc.tar.gz /etc
Dr_
fuente
2
si uno tiene un sistema "antiguo" sin la opción "-z", pueden hacer lo siguiente: cd / ; tar cf - ./etc | gzip -c - > myetc.tar.gz (si se pregunta por qué tar "./etc" en lugar de "/ etc", es porque en esos sistemas más antiguos, cuando se usa tar xvf, saldrá a / etc y lo sobrescribirá ... [o debe usar "pax" en ese caso]). Comando inverso, es decir, extraer ese archivo debajo de "/ en algún lugar": cd /somewhere ; gzip -dc < /the/location/of/myetc.tar.gz | tar xvf -
Olivier Dulac
1

Si realmente no tiene alquitrán disponible, puede usar gzip para crear una copia de seguridad de un directorio usando la opción (-r - recursivamente), pero tal vez no sea exactamente lo que espera ...

Primero deberá copiar su directorio a otro nombre, si desea mantener el directorio original intocable.

#cp -a directory my_gzip_alone_backup

En segundo lugar, comprimirá todos los archivos del directorio de forma recursiva (-r).

#gzip -r my_gzip_alone_backup

Ahora echemos un vistazo al interior de my-gzip-alone-backup. No tendrá un solo archivo myfile.gz como espera, sino muchos archivos gziped de forma recursiva. Pero no es bueno hacer eso con etc. debido a los enlaces simbólicos ...

Para descomprimir el directorio, se puede aplicar la misma lógica con gunzip.

Otra forma es convertir el directorio en un solo archivo, si no tiene tar para hacerlo, pero tiene la utilidad dd, como se demuestra en esta publicación: /ubuntu/626634/converting-a -archivo-a-directorio

Luciano Andress Martini
fuente