Como posso criar um alcatrão comprimido no sun solaris?

11

Estou logado no Sun Solaris OS. Eu quero criar e extrair um arquivo tar compactado. Eu tentei este comando UNIX normal:

tar -cvzf file.tar.gz directory1

Não está executando no Sun OS com o seguinte erro

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}...
Girish Sunkara
fonte
2
Por que você acha que é um comando UNIX normal?
schaiba
Eu acho que você precisa gastar algum tempo lendo as diferenças entre as ferramentas Unixes Linux e GNU.
coteyr
4
Quando acrescentou que zbandeira para GNU tar, perdemos o nosso maior exemplo para ensinar as pessoas a pensar logicamente e construir um gasoduto ...

Respostas:

27

Para evitar a criação de arquivo intermediário temporário, você pode usar este comando

tar cvf - directory1|gzip -c >file.tar.gz
Romeo Ninov
fonte
2
Isso tem a vantagem potencial de que parte do processamento pode ocorrer em paralelo.
Psmears # 28/17
É f -necessário ou o Solaris gera tarsaída para stdout por padrão?
Mark
2
@ Mark: De acordo com a página de manual , "Se ffor omitido, tarusará o dispositivo indicado pela TAPEvariável de ambiente, se definido; caso contrário, usará os valores padrão definidos em /etc/default/tar". Portanto, não, não parece que você possa assumir com segurança que f -não é necessário.
Ilmari Karonen
@ Romeo: Obrigado pela resposta, achei útil. Você pode esclarecer por que "-" é necessário entre o cvf e o nome do diretório? Além disso, tentei seu comando em vários sistemas operacionais - Solaris 10, 11.4, Linux (RHEL, CentOS, Oracle etc.) e funciona de maneira consistente. Também revi as respectivas páginas do manual tar - por que as opções acima funcionam no Linux sem "-" antes do cvf? Eu esperaria que o Linux exigisse algo como "tar -cvf ...." Obrigado novamente pela resposta.
rc1 29/02
@ rc1, o traço no tar significa que você define o arquivo de saída como STDOUT. Existem dois estilos de parâmetros, BSD e SYSV. E o tar do Linux funciona com os dois (com e sem traço antes do cvf)
Romeo Ninov
10

Parece que o Solaris tarnão sabe como compactar. Então, faça-o manualmente:

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

Isso é tudo o que o -zGNU tar faz, de qualquer maneira. O comando acima será produzido file.tar.gz.

terdon
fonte
Isso funcionará (contanto que você tenha espaço em disco suficiente para armazenar o file.tararquivo intermediário descompactado ), mas é desnecessariamente lento e desperdício de espaço em disco. Não consigo pensar em nenhuma situação em que isso seria preferível à resposta de Romeu Ninov .
Ilmari Karonen
1
@IlmariKaronen também não. Acabei de pensar nisso primeiro.
terdon
2

Verifique se você SUNWgtarinstalou. Essa é a versão do GNU tare fornece o /usr/sfw/bin/gtarque permitirá o uso das opções do GNU para tar.

MikeA
fonte
-1

Por favor, tente abaixo do comando

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

(para compactar o arquivo no solaris)

gunzip file.tar.gz

(para descompactar)

Nilesh Varshney
fonte
1
Isso não adiciona muito mais do que uma resposta anterior
Jeff Schaller
Ele também despeja todo o arquivo tar (incluindo todo o binário nos cabeçalhos) no terminal, em vez de desarquivar os arquivos. Você provavelmente precisaria reiniciar o terminal posteriormente.
26219 Paul_Pedant