Mögliches Duplikat:
sudo tar cvpzf wird aufgrund eines vorherigen Fehlers mit einem Fehler beendet
Wenn ich den Befehl ausführe
tar -cvfz backup.tar.gz somedirectory
Ich bekomme folgendes sterr
tar: Exiting with failure status due to previous errors
Wenn ich jedoch den vorangehenden Bindestrich von -cvfz
weglasse alles scheint gut zu funktionieren. Gibt es einen bekannten Grund dafür, warum der Bindestrich mich daran hindert, meine Dateien zu tarieren?
Akzeptierte Antwort:
Ich bin mir nicht sicher, warum tar cvfz
funktioniert nach einem schnellen Scan des man
Seite und meiner Erfahrung nach ist ein Bindestrich gängige Praxis. Vielleicht ist es eine BSD-Kompatibilitätssache (wie ps
).
Deine Syntax ist jedenfalls falsch. -f
nimmt das nächste Argument als den Dateinamen, in den komprimiert werden soll. In diesem Fall lautet dieser Dateiname z
, was Sie nicht erwartet haben. Hier ist ein Beispiel der Ausgabe, damit Sie sehen können, was ich meine:
$ 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
Ein ls
zeigt eine Datei namens z
. Die file
Der Befehl zeigt, dass es sich um einen unkomprimierten tar
handelt Archiv. Es ist unkomprimiert, weil das -z
Argument wurde nicht bestanden. Und die Fehlermeldung kam vom Versuch, die nicht vorhandene Datei test.tar.gz
hinzuzufügen zum Archiv.
Ordnen Sie einfach die Optionen neu und Sie werden in Ordnung sein:
tar -czvf test.tar.gz some/directory
Wenn Sie immer das -f
machen Das letzte Argument, es wird dir gut gehen. Denken Sie übrigens daran, dass kurze Optionen (Ein-Buchstaben-Optionen), die Argumente annehmen, normalerweise kein Leerzeichen zwischen der Option und dem Argument benötigen.
BEARBEITEN: Übrigens, wenn das Formular ohne Bindestrich eine BSD-Kompatibilitätssache oder so etwas ist, dann ist es wahrscheinlich, dass tar
in einer solchen Umgebung aufgerufen wird, ist anders und erfordert nicht den f
-Flag, um die Eingabedatei anzugeben, funktioniert aber eher wie cp
oder so. Aber das ist nur eine Spekulation basierend auf einem Vergleich mit ps
(siehe auch).