Nehmen wir an, ich mache das tar cfzp home.tar.gz /home
(dauert eine Weile) und eine Datei ändert sich während der Komprimierung und tar schlägt fehl. Ich bekomme "Datei geändert, während wir sie lesen" und tar stoppt. Ich gehe davon aus, dass home.tar.gz jetzt unvollständig ist, oder war das nur der "Hinweis" und nicht wirklich ein Fehler?
Gibt es eine Art "Force" -Option, mit der Teer seine Arbeit beendet und Fehler nicht abgebrochen werden?
Bearbeiten / Aktualisieren: Ich habe festgestellt, dass "--ignore-failed-read bei unlesbaren Dateien nicht ungleich Null beendet wird", und zumindest denke ich, dass es funktioniert. Sie müssen jedoch mit der Reihenfolge der Parameter vorsichtig sein, da Sie möglicherweise eine TAR-Datei mit dem Namen "--ignore-failed-read" erhalten.
Muss ich noch etwas ignorieren?
Update: Ohne "--ignore-failed-read" wird tar fortgesetzt, wenn eine Datei entfernt wurde. "Datei entfernt, bevor wir sie lesen". Ich denke jedoch, dass der Fehler "Datei beim Lesen geändert" möglicherweise abgebrochen wird, aber ich weiß es nicht wirklich. Es ist schwierig, das Archiv mit dem "Original" zu vergleichen, da ich Cache-Dateien habe, die kommen und gehen usw.
Update: Bei näherer Betrachtung ist "Datei geändert, während wir sie lesen" eher ein Hinweis. Es sieht so aus, als würde tar weiterarbeiten, wenn sich Dateien ändern, während tar sein Geschäft betreibt. Aber ich lasse die Antwort offen, vielleicht kann jemand mit mehr Erfahrung mehr Einsicht hinzufügen.
Antworten:
Ihre Annahme ist richtig. "Datei geändert, während wir sie lesen" ist ein Hinweis, der sich normalerweise auf verwendete Dateien bezieht (dh während des Erstellungsprozesses geschrieben wurde), während tar das Archiv erstellt. Wenn Konsistenz von entscheidender Bedeutung ist, sollten Sie den Inhalt besser an anderer Stelle synchronisieren, z
Dies bietet Ihnen den Vorteil, dass Sie über einen Sicherungsspeicherort verfügen, an dem nur die Diffs aktualisiert werden müssen, bevor der Tarball erstellt wird.
quelle
Ich denke, die richtige Antwort auf Ihre Frage sollte lauten:
Verwenden Sie
tar --warning=no-file-changed
diese Option, um nur Warnungen zu unterdrücken"%s: file changed as we read it"
. Ein General--ignore-failed-read
kann Fehler ignorieren, die Sie lieber nicht ignorieren möchten.quelle
So komprimieren Sie mehrere Dateien, während Sie fehlende Dateien überspringen :
quelle