1
resposta

Duvida referente ao tar

De curioso usei o tar sem a flag "f" e ele funcionou corretamente, tanto para criar quanto para extrair, gostaria de saber qual é a real diferença ou impacto que causa caso eu use essa flag ou não. Pra mim pareceu opcional, isso procede?

1 resposta

Boa tarde Phelippe.

O comando tar tem uso em 2 situações, para a compactação e descompactação (no caso do tar seria empacotamento e desempacotamento, pois nada é comprimido e sim agrupado, mas vamos seguir os nomes compactação e descompactação).

Ambiente simulado (2 arquivos, test e test2 com conteúdos diferentes):

Leo@Alura:/tmp/teste# ls
test  test2

Leo@Alura:/tmp/teste# cat test
a
b
c

Leo@Alura:/tmp/teste# cat test2
f g h i
  • Compactação

    • Se não for usado a flag "f" para indicar um arquivo teremos um erro, impedindo a execução do tar
        root@Alura:/tmp/teste# tar cv teste.tar test
        tar: Refusing to write archive contents to terminal (missing -f option?)
        tar: Error is not recoverable: exiting now
    • O mesmo ocorre se tivermos apenas 1 arquivo na pasta
  • Descompactação

    • Se não for usado a flag "f" para indicar um arquivo teremos um erro, impedindo a execução do tar
      tar xv teste.tar  
      tar: Refusing to read archive contents from terminal (missing -f option?)
      tar: Error is not recoverable: exiting now
      Então podemos ver que a flag "f" é obrigatória para a execução do tar, se formos usar arquivos.

O que pode ocorrer é que a sua distribuição tem uma versão diferente o utilitário, onde a flag é implícita ou ja vem com um alias (como se fosse um atalho para um comando), podemos verificar se é um alias usando o comando

alias

onde teremos uma saída parecida com essa:

alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l='ls -CF'
alias la='ls -A'
alias ll='ls -alF'
alias ls='ls --color=auto'

se for um alias ira ter uma linha com alias tar='tar -f ou algo parecido.

Para verificar se você tem uma versão diferente do tar basta executar

tar --version

e observar a saída, no meu caso foi:

tar (GNU tar) 1.34
Copyright (C) 2021 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Resumindo, de forma geral a utilitário tar pede por um arquivo com a flag "f" para indicar um arquivo (file), e essa flag não é opcional

espero ter ajudado, continue com seus teste e experiências e bons estudos