O que o parâmetro -f faz no comando tar

19

Ao usar tar, sempre incluo -fnos parâmetros, mas não faço ideia do porquê.

Eu olhei para o homem e ele disse;

-f, --file [HOSTNAME:]F

use archive file or device F (default
"-", meaning stdin/stdout)

Mas, para ser sincero, não tenho ideia do que isso significa. Alguém pode lançar alguma luz sobre isso?

Toby
fonte

Respostas:

20

A -fopção informa tarque o próximo argumento é o nome do arquivo, ou a saída padrão, se for o caso -.

ddeimeke
fonte
Ah, saúde! Eu presumi que o nome do arquivo teria que aparecer a seguir de qualquer maneira, então isso -f estava fazendo algo mais especial!
Toby
6
@ Toby: Eu suspeito que isso seja por razões históricas. "tar" é uma abreviação de "arquivo de fita" e, presumivelmente, as versões originais não imaginavam as pessoas usando arquivos de disco para arquivos com tanta frequência.
David Thornley
8

Bem simples. Se você omitir o -fparâmetro, a saída será passada para stdout:

gammy@denice:/tmp/demo$ tar -c a b c
a0000644000175000017500000000000011435437117010223 0ustar  gammygammyb0000644000175000017500000000000011435437117010224 0ustar  gammygammyc0000644000175000017500000000000011435437117010225 0ustar  gammygammygammy@denice:/tmp/demo$ ls
a  b  c
gammy@denice:/tmp/demo$ 

...que bagunça!

O -fparâmetro (como você citou) espera um nome de arquivo (e opcionalmente um nome de host), portanto, o primeiro argumento após o nome do arquivo de saída:

gammy@denice:/tmp/demo$ tar -cf output.tar a b c
gammy@denice:/tmp/demo$ ls
a  b  c  output.tar
gammy@denice:/tmp/demo$ 
gamen
fonte
5
> Se você pressionar o parâmetro -f, a saída será passada para stdout . Isso é verdade com o tar GNU, mas eu lembro que no Solaris o padrão era um dispositivo de fita ( /dev/rmt0ou algo assim).
Cristian Ciupitu
* omitir (não "oprimir")
Sr. Ethernet
11
Até o GNU respeita tara TAPEvariável que não está mais documentada . Por exemplo, tente TAPE=/tmp/tape.tar tar cv /etc/h*e depois ls -l /tmp/tape.tar.
roaima 15/12
2

Permite especificar o arquivo ou dispositivo com o qual você trabalhará. Criar, atualizar ou extrair itens dele, dependendo de outros sinalizadores fornecidos. Por exemplo:

# Create a tar file with the contents of somepath/
tar -cvf filename.tar somepath/

# Extract the tar file.
tar -xvf filename.tar
signine
fonte