GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Extrahieren Sie eine einzelne Datei aus einer riesigen TGZ-Datei

Leider, um einzelnes Mitglied von .tar.gz zu entpacken Archiv müssen Sie das gesamte Archiv verarbeiten, und Sie können nicht viel tun, um es zu reparieren.

Hier ist .zip (und einige andere Formate wie .rar )-Archive funktionieren viel besser, weil zip format hat ein zentrales Verzeichnis aller darin enthaltenen Dateien mit direkten Offsets, die auf die Mitte des zip zeigen Datei, sodass Archivmitglieder schnell extrahiert werden können, ohne das Ganze zu verarbeiten.

Sie fragen sich vielleicht, warum .tar.gz verarbeitet wird ist so langsam?

.tar.gz (oft abgekürzt als .tgz ) ist einfach .tar Archiv komprimiert mit gzip Kompressor. gzip ist ein Streaming-Kompressor, der nur mit einer Datei arbeiten kann. Wenn Sie einen Teil von gzip erhalten möchten streamen, müssen Sie ihn als Ganzes dekomprimieren, und das bringt ihn für .tar.gz wirklich um (und für .tar.bz2 , .tar.xz und andere ähnliche Formate basierend auf .tar ).

.tar Format ist eigentlich sehr, sehr einfach. Es ist einfach ein Strom von 512-Byte-Datei- oder Verzeichnis-Headern (Name, Größe usw.), jeweils gefolgt von Datei- oder Verzeichnisinhalten (aufgefüllt auf 512-Blockgröße mit 0 Bytes, falls erforderlich). Wenn Sie einen völlig leeren 512-Block für einen Header beobachten, bedeutet dies das Ende von .tar archivieren.

Einige Leute denken, dass sogar .tar auf Archivmitglieder kann nicht schnell zugegriffen werden, aber das ist nicht ganz WAHR. Wenn .tar Das Archiv enthält nur wenige große Dateien, Sie können tatsächlich schnell in den nächsten Header suchen und so das erforderliche Archivmitglied in wenigen Suchvorgängen finden (könnte aber dennoch so viele Suchvorgänge erfordern, wie Archivmitglieder vorhanden sind). Wenn Ihr .tar Das Archiv enthält viele kleine Dateien, was bedeutet, dass ein schnelles Abrufen von Mitgliedern selbst für unkomprimiertes .tar praktisch unmöglich wird .


Wenn Sie nur eine Datei aus einer großen TAR-Datei extrahieren, verwenden Sie GNU tar , und Sie können garantieren, dass die tar-Datei niemals angehängt wurde dann können Sie mit --occurrence eine deutliche Leistungssteigerung erzielen .

Diese Option weist tar an, anzuhalten, sobald es das erste Vorkommen jeder angeforderten Datei findet, also z. B.

tar xf large-backup.tar --occurrence etc/passwd etc/shadow

wird nicht durch den gesamten Tarball spulen, nachdem es eine Kopie von jedem von passwd gefunden hat und shadow , stattdessen stoppt es. Wenn diese Dateien gegen Ende erscheinen, ist der Leistungsgewinn nicht sehr groß, aber wenn sie sogar auf halbem Weg durch eine 500-GB-Datei erscheinen, sparen Sie viel Zeit.

Für Leute, die tar verwenden für Single-Shot-Backups und ohne echte Bandlaufwerke ist diese Situation wahrscheinlich der typische Fall.

Beachten Sie, dass Sie auch --occurrence=NUMBER übergeben können um das NUMBER. Vorkommen jeder Datei abzurufen, was hilfreich ist, wenn Sie wissen, dass es gibt mehrere Versionen im Archiv. Standardmäßig entspricht das Verhalten einem NUMBER von 1.


Wenn Sie es mit einem großen Tarball zu tun haben, verwenden Sie:

--fast-read um nur den ersten Archiveintrag zu extrahieren, der mit dem Dateinamen-Operanden path/to/file übereinstimmt in diesem Fall - was im Tarball sowieso immer einzigartig ist

tar -xvf file.tgz --fast-read path/to/file

Das obige wird suchen, bis es eine Übereinstimmung findet, und dann beenden


Linux
  1. Wie wandelt man eine Tar-Datei in eine Tgz-Datei um?

  2. Wie extrahiere ich ein einzelnes Attribut aus einer XML-Datei?

  3. Öffnen einer .tar.gz-Datei mit einem einzigen Befehl

  4. Tar-Fehler:Unerwartetes EOF im Archiv

  5. Wie extrahiere ich einen einzelnen Byteblock aus einer Datei?

So extrahieren oder entpacken Sie tar.gz-Dateien von der Linux-Befehlszeile

So extrahieren (entpacken) Sie die Tar Gz-Datei

So extrahieren (entpacken) Sie die Tar Bz2-Datei

So extrahieren (entpacken) Sie die tar.xz-Datei

Extrahieren Sie die tar.gz-Datei unter Linux

Indiziertes Archivformat?