Kann Tar beim ersten Fehler zum Beenden gezwungen werden?

Kann Tar beim ersten Fehler zum Beenden gezwungen werden?

Bei vielen Arten von Fehlern wird standardmäßig tareine Meldung an stderr ausgegeben und dann die Verarbeitung fortgesetzt. Dabei handelt es sich um Fehler, die als „behebbare“ Fehler bezeichnet werden. Dabei handelt es sich normalerweise um Fehler, die sich auf eine einzelne Datei oder ein einzelnes Archivmitglied beziehen, z. B. Berechtigungsprobleme.

Manchmal ist dieses Verhalten wirklich nervig. Wenn ich beispielsweise ein Archiv entpacke und die Festplatte voll ist, kann es sein, dass ich so etwas bekomme:

tar: python-lib/PyML/classifiers/ext/_cgist.so: Wrote only 2048 of 10240 bytes
tar: python-lib/PyML/classifiers/ext/_csmo.so: Cannot write: No space left on device
tar: python-lib/PyML/classifiers/ext/_csvmodel.so: Cannot write: No space left on device
tar: python-lib/PyML/classifiers/ext/_knn.so: Cannot write: No space left on device
tar: python-lib/PyML/classifiers/ext/_libsvm.so: Cannot write: No space left on device
tar: python-lib/PyML/classifiers/ext/_mylibsvm.so: Cannot write: No space left on device
tar: python-lib/PyML/classifiers/ext/cgist.py: Cannot write: No space left on device
tar: python-lib/PyML/classifiers/ext/csmo.py: Cannot write: No space left on device

das kann in einem großen Archiv Tausende von Zeilen dauern. Wenn dies in einem Skript passiert, würde ich es lieber tarsofort beenden, damit ich dem Benutzer sofort eine Fehlermeldung geben kann.

Gibt es eine Möglichkeit, tardas Programm beim ersten angezeigten Fehler zu beenden? Ich kann das in einem Scan von nicht sehen tar --help. Jedes vernünftige Rezept für ein Wrapper-Skript, das diesen Zweck erfüllt, ist ebenfalls willkommen.

Antwort1

Eine Möglichkeit besteht darin, die Standardfehlerausgabe /dev/fullbeispielsweise wie folgt umzuleiten:

tar ... 2>/dev/full

Dies führt dazu, dass Tar fehlschlägt, wenn es versucht, eine Warnmeldung auszugeben stderr.

verwandte Informationen