tar: Dies sieht nicht wie ein Tar-Archiv aus

tar: Dies sieht nicht wie ein Tar-Archiv aus

Ich habe einen riesigen Ordner aufgeteilt:

$ tar cvpf - somedir | split -b 50000m

… und dann habe ich die geteilten Dateien auf einen anderen Server übertragen und zusammengeführt:

$ cat x* > somedir.tar.gz

aber als ich versuchte, die Datei zu extrahieren, wurden Fehler angezeigt:

$ tar xvf somedir.tar.gz
tar: This does not look like a tar archive
tar: Skipping to next header
tar: Archive contains obsolescent base-64 headers
tar: Error exit delayed from previous errors

Wie kann ich es wieder in einen Ordner übertragen/extrahieren? Danke

Antwort1

  1. Sie haben nicht komprimiert, also geben Sie der Zieldatei keinen Namen somedir.tar.gz-- nennen Sie siesomedir.tar
    • das ist für Ihr Problem nicht wirklich relevant – tar xvfhätte trotzdem funktionieren sollen
  2. Überprüfen Sie noch einmal, ob es sich bei Ihrer Übertragung (insbesondere über FTP) um eine binäre Übertragung (und nicht um eine Textübertragung) handelt.
  3. Überprüfen Sie abschließend, ob die Dateien tatsächlich korrekt übertragen wurden
    • Hierzu sollten Sie die Dateigrößen auf Quell- und Zielseite überprüfen.
    • oder noch besser, gleichen Sie die MD5-Summen auf beiden Seiten ab (dadurch wird auch Punkt 2 überprüft)

Wenn Sie die obigen Punkte überprüft haben und die MD5-Summen an beiden Enden übereinstimmen, sollten Sie zunächst versuchen, Ihre Aufteilung zu überprüfen. Funktionieren also der Join und das Tar-TF auf der Quellmaschine?

Wenn Ihr somedirVerzeichnis sehr groß ist, versuchen Sie den Workflow mit einem kleinen Verzeichnis.
Verwenden Sie es tar cvpf, um zunächst ein einfaches Tarball zu erstellen, es aufzuteilen und nach einem erneuten Zusammenschluss zu testen.
Kopieren Sie nun die Aufteilung wie zuvor auf Ihren Zielcomputer und testen Sie dort nach einem erneuten Zusammenschluss.
Dies sollte die Lokalisierung Ihres Problems beschleunigen.

Antwort2

Geben Sie Ihrem zusammengesetzten Tarball nicht den Namen somefile.tar.gz, da esnichtkomprimiert. Um Verwirrung tarbei der automatischen Komprimierungserkennung zu vermeiden, müssen Sie es unbedingt benennen somefile.tar.

Zitat aus dem tarInfohandbuch:

Der Formaterkennungsalgorithmus basiert auf „Signaturen“, speziellen Bytefolgen am Anfang der Datei, die für bestimmte Komprimierungsformate spezifisch sind. Wenn dieser Ansatz fehlschlägt, greift „tar“ auf die Verwendung des Archivnamenssuffixes zurück, um das Format zu bestimmen ...

Was also wahrscheinlich passiert, ist, dass Ihr Tarball nicht mit einer der Signaturen bekannter Komprimierungsmethoden beginnt und daher tarauf den Dateinamen zurückgreift, um die Komprimierung zu bestimmen. In Ihrem Fall endet der Name mit .gz, sodass gzipvon Komprimierung ausgegangen wird. Dies führt zu den Fehlern, die Sie erhalten, da die Datei nicht wirklich komprimiert ist.

tl;dr: Benennen Sie das Tarball mit dem .tarSuffix, nicht .tar.gz.

verwandte Informationen