web-dev-qa-db-fra.com

tar existe sur "Cannot stat: No such file or directory", pourquoi?

J'essaie de créer un fichier tar.gz en utilisant la commande suivante:

Sudo tar -vcfz dvr_rdk_v1.tar.gz dvr_rdk/

Il commence alors à créer des fichiers (de nombreux fichiers dans le dossier), mais j'obtiens ensuite l'erreur suivante:

tar: dvr_rdk_v1.tar.gz: Cannot stat: No such file or directory
tar: Exiting with failure status due to previous errors

Je ne vois aucune description de cette erreur, qu'est-ce que cela signifie?

54
ransh

Supprimez - Des options vcfz. tar n'a pas besoin de tiret pour les options.

Avec un tiret, l'argument de l'option -f Est z. La commande essaie donc en fait d'archiver dvr_rdk_v1.tar.gz Et dvr_rdk Dans une archive appelée z. Sans le tiret, la sémantique des options change, de sorte que l'argument suivant sur la ligne de commande, c'est-à-dire le nom de fichier de votre archive, devient l'argument du drapeau f.

Vérifiez également votre autorisation d'écriture dans le répertoire à partir duquel vous exécutez la commande.

69
Velnix

L'option -f Doit précéder directement le nom de fichier. Donc, utilisez tar -vczf filename.tar.gz Au lieu de -vcfz

64
twan163

La commande tar a historiquement été l'une des rares commandes qui ne suit pas Unix directives de syntaxe de l'utilitaire .

La page des normes pour tar dit:

f
Utilisez le premier opérande de fichier (ou le second, si b a déjà été spécifié) comme nom de l'archive au lieu de la valeur par défaut dépendante du système

Bien que les directives de syntaxe incluent ceci:

Ligne directrice 5:
Une ou plusieurs options sans arguments d'option, suivies par au plus une option qui prend un argument d'option, doivent être acceptées lorsqu'elles sont regroupées derrière un délimiteur "-".

Ainsi, alors que la commande que vous avez tapée, tar -vcfz dvr_rdk_v1.tar.gz dvr_rdk/, conviendrait aux anciennes versions de tar, certaines versions de tar écrites pour suivre strictement les directives de syntaxe de l'utilitaire analyseront ceci pour signifier "utiliser z comme argument de fichier pour -f ". Vous devez donc utiliser ce qui suit pour être portable:

tar -cvzf dvr_rdk_v1.tar.gz dvr_rdk/
18
Mark Plotnick