¿Qué hace el parámetro -f en el comando tar?

19

Cuando uso tarsiempre incluyo -fen los parámetros, pero no tengo idea de por qué.

Miré al hombre y dijo:

-f, --file [HOSTNAME:]F

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

Pero para ser honesto, no tengo idea de lo que eso significa. ¿Alguien puede arrojar alguna luz sobre él?

Toby
fuente

Respuestas:

20

La -fopción indica tarque el siguiente argumento es el nombre del archivo o la salida estándar si es así -.

ddeimeke
fuente
Ah, salud! Supuse que el nombre del archivo tendría que aparecer a continuación de todos modos, ¡así que -f estaba haciendo algo más especial!
Toby el
66
@Toby: sospecho que esto es por razones históricas. "tar" es la abreviatura de "archivo de cinta", y presumiblemente las versiones originales no imaginaban que la gente usara archivos de disco para archivos con tanta frecuencia.
David Thornley
8

Bastante sencillo. Si omite el -fparámetro, la salida se pasa a 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 desastre!

El -fparámetro (como lo citó) espera un nombre de archivo (y opcionalmente un nombre de host), de ahí que el primer argumento después de que sea el nombre de archivo de salida:

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
fuente
55
> Si oprime el parámetro -f, la salida se pasa a stdout . Esto es cierto con GNU tar, pero recuerdo que en Solaris el valor predeterminado era un dispositivo de cinta ( /dev/rmt0o algo así).
Cristian Ciupitu
* omitir (no "oprimir")
Sr. Ethernet
1
Incluso GNU tarrespeta la TAPEvariable que ya no está documentada . Por ejemplo, intente TAPE=/tmp/tape.tar tar cv /etc/h*y luego ls -l /tmp/tape.tar.
roaima
2

Le permite especificar el archivo o dispositivo con el que va a trabajar. Ya sea creando, actualizando o extrayendo cosas de él dependiendo de otros indicadores suministrados. Por ejemplo:

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

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