it-swarm.com.de

tar wird bei "Kann nicht stat: Keine solche Datei oder kein solches Verzeichnis" beendet. Warum?

Ich versuche, eine tar.gz-Datei mit dem folgenden Befehl zu erstellen:

Sudo tar -vcfz dvr_rdk_v1.tar.gz dvr_rdk/

Es beginnt dann, Dateien zu erstellen (viele Dateien im Ordner), aber dann erhalte ich die folgende Fehlermeldung:

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

Ich sehe keine Beschreibung dieses Fehlers. Was bedeutet das?

54
ransh

Entfernen Sie - Aus den Optionen vcfz. tar benötigt keinen Bindestrich für Optionen.

Bei einem Bindestrich lautet das Argument für die Option -fz. Der Befehl versucht also tatsächlich, dvr_rdk_v1.tar.gz Und dvr_rdk In einem Archiv namens z zu archivieren. Ohne den Bindestrich ändert sich die Semantik der Optionen, sodass das nächste Argument in der Befehlszeile, d. H. Der Dateiname Ihres Archivs, zum Argument für das Flag f wird.

Überprüfen Sie auch Ihre Schreibberechtigung für das Verzeichnis, aus dem Sie den Befehl ausführen.

69
Velnix

Die Option -f Sollte direkt vor dem Dateinamen stehen. Verwenden Sie also tar -vczf filename.tar.gz Anstelle von -vcfz

64
twan163

Der Befehl Befehl tar war historisch gesehen einer der wenigen Befehle, die nicht den Unix Richtlinien für die Syntax von Dienstprogrammen entsprechen.

Die Standardseite für Teer sagt:

f
Verwenden Sie den ersten Dateioperanden (oder den zweiten, falls b bereits angegeben wurde) als Namen des Archivs anstelle der systemabhängigen Standardeinstellung

Während die Syntaxrichtlinien Folgendes enthalten:

Leitlinie 5:
Eine oder mehrere Optionen ohne Optionsargumente, gefolgt von höchstens einer Option, die ein Optionsargument akzeptiert, sollten akzeptiert werden, wenn sie hinter einem Trennzeichen '-' gruppiert sind.

Während der von Ihnen eingegebene Befehl tar -vcfz dvr_rdk_v1.tar.gz dvr_rdk/ Bei älteren Versionen von tar in Ordnung ist, analysieren bestimmte Versionen von tar, die so geschrieben wurden, dass sie genau den Richtlinien für die Dienstprogrammsyntax entsprechen, dies als "use z" als Dateiargument zu -f ". Sie sollten also Folgendes verwenden, um portabel zu sein:

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