tar -cvfz resulta em mensagem de erro, a menos que eu omita o hífen antes de 'cvfz' [duplicado]

3

Quando eu executo o comando

tar -cvfz backup.tar.gz somedirectory

Eu recebo o seguinte sterr

tar: Exiting with failure status due to previous errors

No entanto, quando omito o hífen precedente de -cvfz , tudo parece funcionar bem. Existe uma razão conhecida por que o hífen está me impedindo de tarar meus arquivos?

    
por user784637 09.01.2012 / 04:32

1 resposta

6

Não sei por que tar cvfz funciona, quando estou acostumado a fazer uma verificação rápida da página man e da minha experiência, um hífen é uma prática padrão. Talvez seja uma coisa de compatibilidade do BSD (como ps ).

De qualquer forma, sua sintaxe está incorreta. -f usa o próximo argumento como o nome do arquivo para compactar. Nesse caso, esse nome de arquivo é z , o que você não esperava. Aqui está uma amostra da saída para que você possa ver o que quero dizer:

$ tar -cvfz test.tar.gz scott
tar: test.tar.gz: Cannot stat: No such file or directory
scott/
scott/netx/
scott/netx/locks/
scott/netx/locks/netx_running
tar: Exiting with failure status due to previous errors

Um ls mostra um arquivo chamado z . O comando file revela que é um arquivo tar descompactado. Ele está descompactado porque o argumento -z não foi passado. E a mensagem de erro veio da tentativa de adicionar o arquivo inexistente test.tar.gz ao arquivo.

Simplesmente reordene as opções e você ficará bem:

tar -czvf test.tar.gz some/directory

Se você sempre fizer o -f o último argumento, você ficará bem. A propósito, lembre-se que opções curtas (opções de uma letra) que aceitam argumentos normalmente não requerem um espaço entre a opção e o argumento.

EDIT: A propósito, se o formulário sem o hífen for algo compatível com o BSD ou algo assim, é provável que a maneira como o tar é invocado em tal ambiente seja diferente, e não requer o sinal f para especificar o arquivo de entrada, mas funciona mais como cp ou algo assim. Mas isso é apenas especulação baseada na comparação com ps (q.v.).

    
por Scott Severance 09.01.2012 / 05:05