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.).