¿Cómo puedo crear un alquitrán comprimido en sun solaris?

11

Estoy conectado al sistema operativo Sun Solaris. Quiero crear y extraer un archivo tar comprimido. Probé este comando normal de UNIX:

tar -cvzf file.tar.gz directory1

No se está ejecutando en Sun OS con el siguiente error

bash-3.2$ tar -cvzf file.tar.tz directory1
tar: z: unknown function modifier
Usage: tar {c|r|t|u|x}[BDeEFhilmnopPqTvw@[0-7]][bfk][X...] [blocksize] [tarfile] [size] [exclude-file...] {file | -I include-file | -C directory file}...
Sunkara girish
fuente
2
¿Por qué crees que es un comando normal de UNIX?
schaiba
Creo que necesita pasar un tiempo leyendo sobre las diferencias entre las herramientas Unixes Linux y GNU.
coteyr
44
Cuando agregaron esa zbandera al alquitrán GNU, perdimos nuestro mejor ejemplo para enseñar a las personas cómo pensar lógicamente y construir una tubería ...

Respuestas:

27

Para evitar la creación de un archivo intermedio temporal, puede usar este comando

tar cvf - directory1|gzip -c >file.tar.gz
Romeo Ninov
fuente
2
Esto tiene la ventaja potencial de que parte del procesamiento puede ocurrir en paralelo.
psmears
¿Es f -necesario o la tarsalida de Solaris es estándar?
Mark
2
@Mark: De acuerdo con la página del manual , "Si fse omite, tarusará el dispositivo indicado por la TAPEvariable de entorno, si está configurado; de lo contrario, usará los valores predeterminados definidos en /etc/default/tar". Entonces, no, no parece que pueda asumir con seguridad que f -no es necesario.
Ilmari Karonen
@Romeo: Gracias por la respuesta, me pareció útil. ¿Puede aclarar por qué se necesita "-" entre cvf y el nombre del directorio? Además, probé su comando en varios sistemas operativos: Solaris 10, 11.4, Linux (RHEL, CentOS, Oracle, etc.) y funciona de manera consistente. También revisé las páginas de manual de tar respectivas: ¿por qué funciona lo anterior en Linux sin "-" antes del cvf? Esperaría que Linux requiera algo como "tar -cvf ...." Gracias de nuevo por la respuesta.
rc1
@ rc1, el guión en tar significa que configura el archivo de salida como STDOUT. Hay dos estilos de parámetros, BSD y SYSV. Y el tar de Linux funciona con ambos (con y sin guión antes de cvf)
Romeo Ninov
10

Parece que Solaris tarno sabe cómo comprimir. Así que solo hazlo manualmente:

tar -cvf file.tar directory1 && gzip file.tar

De todos -zmodos, eso es todo el cambio de GNU tar. El comando anterior producirá file.tar.gz.

terdon
fuente
Esto funcionará (siempre que tenga suficiente espacio libre en el disco para almacenar el file.tararchivo comprimido intermedio sin comprimir), pero es innecesariamente lento y desperdicia espacio en el disco. No puedo pensar en ninguna situación en la que esto sea preferible a la respuesta de Romeo Ninov .
Ilmari Karonen
1
@IlmariKaronen tampoco puedo. Solo pensé en esto primero.
terdon
2

Comprueba si has SUNWgtarinstalado. Esta es la versión de GNU tary proporciona /usr/sfw/bin/gtarlo que permitirá el uso de las opciones de GNU para tar.

MikeA
fuente
-1

Por favor, intente debajo del comando

tar -cvf file.tar directory1 && gzip file.tar

(para comprimir el archivo en solaris)

gunzip file.tar.gz

(descomprimir)

Nilesh Varshney
fuente
1
Esto no agrega mucho más que una respuesta anterior
Jeff Schaller
También simplemente descarga todo el archivo tar (incluidos todos los binarios en los encabezados) en el terminal, en lugar de desarchivar los archivos. Probablemente necesite reiniciar el terminal después.
Paul_Pedant