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

Datei zu tbz-Dateien hinzufügen

Während tar kann Dateien zu einem bereits bestehenden Archiv hinzufügen, es kann nicht komprimiert werden. Sie müssen bunzip2 das komprimierte Archiv, wobei ein Standard-Tarball zurückbleibt. Sie können dann tar verwenden die Fähigkeit von , Dateien zu einem bestehenden Archiv hinzuzufügen und dann mit bzip2 erneut zu komprimieren .

Aus dem Handbuch:

 -r      Like -c, but new entries are appended to the archive.  Note that this only
         works on uncompressed archives stored in regular files.  The -f option is
         required.

Die andere Antwort ist richtig:Sie können ein komprimiertes Tar-Archiv nicht richtig aktualisieren, ohne es zu dekomprimieren. Die GNU-Tar-Dokumentation weist darauf hin, und der Versuch einer Aktualisierung schlägt mit einer expliziten Fehlermeldung fehl:

$ tar --concatenate --file=cat.tar.bz2 two.tar.bz2 
tar: Cannot update compressed archives
tar: Error is not recoverable: exiting now

Allerdings Sollten Sie an einer schmutzigen Art-of-Works-Lösung interessiert sein, die keine Dekomprimierung erfordert, kann ich Ihnen basierend auf den folgenden Beobachtungen eine anbieten:

  • Anhängen von bzip2-Streams mit cat wird unterstützt und erzeugt einen gültigen bzip2-Stream (dasselbe gilt für gzip);
  • Anhängen von Tars mit cat erzeugt keine gültige tar-Datei, weshalb die --concatenate Option existiert, aber wir können tar bitten, vorzutäuschen, dass sie gültig ist:

Es mag Ihnen intuitiver erscheinen, cat zu verwenden oder zu versuchen, zwei Archive zu verketten, anstatt --concatenate zu verwenden Betrieb; schließlich ist cat das Dienstprogramm zum Kombinieren von Dateien.

Allerdings enthalten tar-Archive eine Dateiende-Markierung, die entfernt werden muss, wenn die verketteten Archive richtig als ein Archiv gelesen werden sollen. --concatenate entfernt die Archivende-Markierung aus dem Zielarchiv, bevor jedes neue Archiv angehängt wird. Wenn Sie cat verwenden, um die Archive zu kombinieren, wird das Ergebnis kein gültiges Archiv im tar-Format sein. Wenn Sie Dateien aus einem Archiv abrufen müssen, das zur Verwendung des cat-Dienstprogramms hinzugefügt wurde, verwenden Sie den --ignore-zeros (-i )-Option.

Basierend auf diesem Wissen können wir beispielsweise Folgendes tun:

cat {one,two}.tar.bz2 >combined.tar.bz2

Dies führt, wie der obige Dokumentationsausschnitt erklärt, zu einer ungültigen TAR-Datei, die jedoch --ignore-zeros verwendet , es kann immer noch vollständig gelesen werden:

## Show contents of `one.tar.bz2'
$ tar tf one.tar.bz2
a
b

## Show contents of `two.tar.bz2'
$ tar tf two.tar.bz2
c

## Show contents of `combined.tar.bz2', bypassing the bad format
$ tar tif combined.tar.bz2
a
b
c

Beachten Sie, dass oben alle drei Dateien aus den ursprünglichen zwei Archiven aufgeführt sind, wobei -i weggelassen wurde listet (korrekt) nur die Dateien aus dem ersten Originalarchiv auf:

$ tar tf combined.tar.bz2 
a
b

Noch einmal, das ist nichts weiter als ein schmutziger Trick, aber es könnte nützlich sein, wenn Sie sowohl die Schreib- als auch die Leseseite kontrollieren und sicherstellen können, dass -i wird verwendet, wenn versucht wird, Dateien zu lesen, die auf diese Weise erstellt wurden.


Linux
  1. So extrahieren Sie .gz- und .tar.gz-Dateien unter Linux

  2. Wie man Dateien tariert (komprimiert), bestimmte Dateien oder Verzeichnisse ausschließt

  3. Tar-Archiv eines Verzeichnisses erstellen, außer für versteckte Dateien?

  4. Wie kann ich eine Datei zu einem bestehenden Tar.gz-Archiv hinzufügen/aktualisieren?

  5. Wie komprimiert man mehrere Dateien in ein .xz-Archiv?

So erstellen Sie eine Tar-Gz-Datei

So archivieren Sie Dateien und Verzeichnisse unter Linux [Teil 1]

Linux-tar-Befehl – ​​So komprimieren Sie Dateien unter Linux

So tarieren Sie bestimmte Dateitypen (Erweiterungen) in einem Verzeichnis

Linux-tar-Befehl zum Komprimieren und Extrahieren von Dateien

Extrahieren Sie die tar.gz-Datei unter Linux