web-dev-qa-db-fra.com

La commande tar -cvfz donne lieu à un message d'erreur, sauf si j'oublie le trait d'union avant 'cvfz'

Duplicate possible:
Sudo tar cvpzf sortant avec échec dû à une erreur précédente

Quand je lance la commande

tar -cvfz backup.tar.gz somedirectory

Je reçois le sterr suivant

tar: Exiting with failure status due to previous errors

Cependant, lorsque je supprime le tiret précédent de -cvfz, tout semble bien fonctionner. Existe-t-il une raison connue pour laquelle le trait d'union m'empêche de gérer mes fichiers?

5
user784637

Je ne suis pas sûr de savoir pourquoi tar cvfz fonctionne. Lors de l'analyse rapide de la page manet de mon expérience, un trait d'union est une pratique courante. Peut-être que c'est une compatibilité BSD (comme psname__).

Quoi qu'il en soit, votre syntaxe est incorrecte. -f prend le prochain argument comme nom de fichier à compresser. Dans ce cas, ce nom de fichier est zname__, ce qui n'est pas ce à quoi vous vous attendiez. Voici un exemple de sortie pour que vous puissiez voir ce que je veux dire:

$ tar -cvfz test.tar.gz scott
tar: test.tar.gz: Cannot stat: No such file or directory
scott/
scott/netx/
scott/netx/locks/
scott/netx/locks/netx_running
tar: Exiting with failure status due to previous errors

lsaffiche un fichier appelé zname__. La commande filerévèle qu'il s'agit d'une archive non compressée tarname__. Il est décompressé car l'argument -z n'a pas été passé. Et le message d'erreur est venu d'essayer d'ajouter le fichier non existant test.tar.gz à l'archive.

Il suffit de réorganiser les options et tout ira bien:

tar -czvf test.tar.gz some/directory

Si vous faites toujours le dernier argument -f, tout ira bien. En passant, rappelez-vous que les options courtes (options à une lettre) qui prennent des arguments ne nécessitent normalement pas d'espace entre l'option et l'argument.

EDIT: Soit dit en passant, si le formulaire sans le tiret est une compatibilité BSD ou quelque chose du genre, il est probable que la façon dont tarsoit invoqué dans un tel environnement est différente et ne le fait pas. t nécessite l’indicateur fpour spécifier le fichier d’entrée, mais fonctionne plutôt comme cpou quelque chose comme ça. Mais il ne s'agit que d'une spéculation basée sur une comparaison avec ps(q.v.).

12
Scott Severance