Teerauffüllung mit Nullen

10

Beim Ausführen eines Tar für eine komprimierte bz2-Datei tritt der folgende Fehler auf:

tar: dump.sql: Datei um 19573448400 Bytes verkleinert; Auffüllen mit Nullen

Kann jemand darauf hinweisen, was dieses Problem verursachen könnte?

Vielen Dank.

Iliyas Shirol
quelle

Antworten:

8

Es ist kein Fehler. Es ist INFO.

Ich bin bereit zu wetten, dass Sie ein Image einer virtuellen Maschine oder eine anderweitig spärlich zugewiesene Datei komprimieren / dekomprimieren.

Bzip2 hat festgestellt, dass die Datei hauptsächlich aus Nullen besteht, und sie komprimiert, sodass sie nicht in der komprimierten Datei enthalten sind.

Dies ist der Unterschied zwischen der tatsächlichen Größe und der scheinbaren Größe von Dateien mit geringer Dichte.

Tom O'Connor
quelle
Ich habe einen Thread gefunden, der hilfreich bestätigt und weiter erklärt: groups.google.com/d/msg/comp.os.linux.misc/RES9Kvw7kO4/…
Martin Eden
1
Wenn es kein Fehler ist, warum wird dann ein Exit-Code ungleich Null erzeugt?
Ben Collins
In meinem Fall enthielt die Datei .tar.bz2 tatsächlich beschädigte Daten: Sie enthielt eine Reihe von NUL-Bytes an der in der Nachricht angegebenen Stelle, an der sie Daten ungleich Null enthalten sollte. Ich habe keine Idee warum. Als ich versuchte, aus dieser Datei eine weitere .tar.bz2 zu erstellen, funktionierte dies ordnungsgemäß.
200_erfolg
1
Dies ist mir gerade passiert, als ich ein Rohteer-Archiv (nicht komprimiert) erstellt habe. Auf keinen Fall bzip bezogen. Außerdem ist die Lauflängencodierung nicht gerade ungewöhnlich, sodass bzip die Berichterstellung nicht stören würde.
Wyatt8740
1

Die betreffende Datei wurde aufgerufen dump.sql, also wahrscheinlich keine bz2-komprimierte Datei. - In jedem Fall hat das Problem nichts mit bz2 oder dem Inhaltstyp der Datei zu tun.

Die Nachricht bedeutet, dass a stat()in der Datei eine andere Größe als die Menge gemeldet hat, die tatsächlich aus der Datei gelesen werden konnte. Dies kann passieren, wenn die Datei während tarder Arbeit geändert wurde.

Dies geschieht auch bei „virtuellen Dateien“ wie denen im Linux / sys-Dateisystem. Viele von ihnen haben eine Größe von 4096 Bytes (ein beliebiger Wert). Einmal geben read()sie nur ein paar Bytes zurück.

Robert Siemer
quelle