Bash: Verketten von TAR-Bällen

Bash: Verketten von TAR-Bällen

Ist es gültig, dies zu tun:

{
tar -c dir1
tar -c dir2
} | cat > file.tar

Ist die resultierende Datei.tar ein gültiger Tarball?
Wenn nicht, wie kann ich Tarballs spontan verketten?

Antwort1

Ja, mit einer leichten Modifikation Ihrer Methode.

tar unterstützt das Zusammenfügen mehrerer tar-Dateien.... erinnern Sie sich an die Geschichte... es ist ein BANDARCHIV... es ist ein Datenstrom, der an eine Bandspule erinnert, die am Lese-/Schreibkopf vorbeisaust... für das tar-Programm sind es nur Datenblöcke...

Meinen Tests zufolge muss irgendwo mindestens EINE TAR-Datei vorhanden sein ...

tar cf one.tar buncha files to add

Ab diesem Punkt können Sie entweder weitere Dateien hinzufügen oder ein weiteres Tar (oder mehrere …) anhängen.

tar rf one.tar even more files to fill up this pseudo tape
tar Af one.tar two.tar three.tar four.tar

In diesem Beispiel wird alles in „one.tar“ zusammengequetscht …

wenn Sie die 'RF', fügt es neue Dateien an das angegebene Tar an (eins.tarhier), während Sie bei Verwendung derAf, es hängt eine oder mehrere Tar-Dateien an die ursprüngliche Tar-Datei an (urk! rekursives Tar! klebrig!)

Wie immer sind die Manpages Ihre Freunde. (langsame, schwach leuchtende, phosphorgrüne Freunde ... aber Freunde)

Antwort2

Sie können Tarballs nicht einfach so aneinanderreihen, denn das Ergebnis wäre nicht erwartungsgemäß. Sie können den Inhalt des Tarballs folgendermaßen überprüfen:

tar tf file.tar

Dies würde nur den Inhalt von dir1ohne drucken dir2. Um zwei Verzeichnisse dir1und dir2in zu archivieren file.tar, können Sie Folgendes verwenden:

tar cf file.tar dir1 dir2

Das Handbuch ist verfügbar unterhttp://www.gnu.org/software/tar/manual/

verwandte Informationen