4 votes

L'ajout du paramètre tar '-z' (gzip) à la fin de 'tar -cvpfz ...' ne fonctionne pas comme prévu.

J'ai utilisé les réponses de Copier des fichiers sans perdre les autorisations des fichiers/dossiers lorsque j'ai rencontré ce comportement intéressant et inattendu.

Utilisation tar cvpfz target.tar.gz dir1 fonctionne parfaitement, et il s'agit essentiellement de la structure des commandes énumérées dans les réponses suggérées à la question mentionnée ci-dessus.

Curieusement, cependant, lorsque j'ai ajouté l'option - avant les paramètres (c'est-à-dire tar -cvpfz ... (en pensant qu'il s'agissait d'un simple changement de style), c'est là que l'étrangeté s'installe.

$ tar -cvpfz target.tar.gz dir1
tar: target.tar.gz: Cannot stat: No such file or directory
...
tar: Exiting with failure status due to previous errors

Plus étrange encore, bien que tar -cvpfz ... jette l'erreur susmentionnée, la commande fonctionne en fait, mais au lieu de créer un fichier gzippé, elle crée un fichier tar avec le nom z (même si l'erreur est toujours présente).

Si je fais un tar -tvf z il énumère correctement le contenu du fichier tar. Si je fais un tar -ztvf z il indique qu'il n'est pas gzippé.

J'ai finalement découvert qu'en remplaçant la commande par tar -zcvpf fonctionne parfaitement. D'une manière ou d'une autre, le fait de mettre le z en premier fonctionne correctement, mais le fait de le placer en dernier (c.-à-d. tar -cvpfz ... ) ne le fait pas !

man tar semble indiquer que le - est optionnelle, et on pourrait penser que la commande tar devrait fonctionner de la même manière avec ou sans l'option - .

J'espère que cela aidera quelqu'un d'autre qui, comme moi, a ajouté l'élément - Il s'agit d'une différence de style qui ne change rien à la commande.

Comme je suis curieuse et que j'aimerais en savoir plus à ce sujet, quelqu'un peut-il m'éclairer sur les raisons de ce phénomène ?

3voto

En -f doit être suivie d'un nom de fichier ou de périphérique. Lors de l'utilisation de l'option tar cvpfz target.tar.gz dir1 vous utilisez en fait ce que l'on appelle "l'ancien style d'option", dans lequel

Lorsque des options nécessitant des arguments sont données en même temps que la commande, tous les arguments associés suivent, dans le même ordre que les options. (page d'information sur le goudron)

1voto

vocadanz Points 51

Muru a vraiment répondu à la question avec les liens qu'il a postés, mais en raison de ses encouragements, je vais recopier l'un de ses liens et récapituler mes commentaires ici pour, je l'espère, faciliter la compréhension de la réponse.

Selon le ce lien StackExchange , le f pour le paramètre tar est un peu spéciale, car elle nécessite un argument (un nom de fichier d'archive) qui suit immédiatement la commande f Si vous faites précéder vos paramètres d'un paramètre - (par exemple tar -cf ). Toutefois, comme le mentionne la réponse dans le lien, il peut être plus sûr de renoncer à l'utilisation de l'outil de gestion de l'information. - , de sorte que le f ne risque pas de traiter les paramètres que vous pourriez placer après le paramètre f comme nom de fichier.

C'est le problème que j'ai rencontré, comme indiqué dans ma question, puisque j'ai essayé de mettre le z juste après le paramètre f (par exemple tar -cvpfz ), ce qui a amené la commande tar à "consommer" avidement le fichier z et le traiter comme l'argument du nom de fichier de l'archive à la fonction f plutôt que de traiter le paramètre z comme étant simplement le tar du paramètre gzip de la commande.

En bref, en omettant le - (par exemple, en utilisant tar cvpfz ... plutôt que tar -cvpfz ) le problème que j'ai rencontré peut être évité. Je sais maintenant pourquoi. Merci, muru !

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X