Que fait le paramètre -f dans la commande tar

19

Lors de l'utilisation, tarj'inclus toujours -fdans les paramètres mais je n'ai aucune idée pourquoi.

J'ai recherché l'homme et il a dit;

-f, --file [HOSTNAME:]F

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

Mais pour être honnête, je n'ai aucune idée de ce que cela signifie. Quelqu'un peut-il nous éclairer?

Toby
la source

Réponses:

20

L' -foption indique tarque l'argument suivant est le nom de fichier de l'archive ou la sortie standard si c'est le cas -.

ddeimeke
la source
Ah, bravo! Je supposais que le nom du fichier devrait apparaître de toute façon, donc ce -f faisait quelque chose de plus spécial!
Toby
6
@Toby: Je soupçonne que c'est pour des raisons historiques. "tar" est l'abréviation de "archive sur bande", et sans doute les versions originales n'envisageaient-elles pas souvent les personnes utilisant des fichiers disque pour les archives.
David Thornley
8

Assez facile. Si vous omettez le -fparamètre, la sortie est transmise à 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$ 

...Quel bordel!

Le -fparamètre-(comme vous l'avez cité) attend un nom de fichier (et éventuellement un nom d'hôte), d'où le premier argument après qu'il s'agit du nom de fichier de sortie:

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
la source
5
> Si vous opprimez le paramètre -f, la sortie est transmise à stdout . Cela est vrai avec GNU tar, mais je me souviens que sur Solaris, la valeur par défaut était un périphérique à bande ( /dev/rmt0ou quelque chose comme ça).
Cristian Ciupitu
* omis (pas "oppress")
Mr Ethernet
1
Même GNU tarhonore la TAPEvariable qui n'est plus documentée . Par exemple, essayez TAPE=/tmp/tape.tar tar cv /etc/h*et ensuite ls -l /tmp/tape.tar.
roaima
2

Il vous permet de spécifier le fichier ou le périphérique avec lequel vous allez travailler. Soit en créant, en mettant à jour ou en extrayant des éléments en fonction des autres drapeaux fournis. Par exemple:

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

# Extract the tar file.
tar -xvf filename.tar
signine
la source