Tar-Komprimierung ohne Verzeichnisstruktur

Tar-Komprimierung ohne Verzeichnisstruktur

Unter meinem aktuellen Verzeichnis habe ich zwei Unterverzeichnisse:

dir_1/
   - file1.png
   - file2.png
   ...
   - fileN.png

dir_2/
   - fileA.txt
   - ...
   - fileZ.txt

Wenn ich die beiden Verzeichnisse mit TAR komprimiere, geschieht Folgendes:

tar -cvzf result.tar.gz dir_1/ dir_2/ 

ich habeergebnis.tar.gzaber es behält die Verzeichnisstruktur bei. Ich meine, wenn ich das extrahiereergebnis.tar.gz, ich habe wieder dir_1& bekommen dir_2.

Wie kann ich tar komprimieren, so dass die Verzeichnisstruktur nicht erhalten bleibt, was bedeutet, dass ich beim Extrahieren der tar.gz-Datei nur Dateien erhalte

result/
   file1.png 
   ... 
   fileN.png 
   fileA.txt
   ...
   fileZ.txt

Antwort1

-CIch denke, dass Sie dies mit der Option tun können .

Von der Tar-Manpage:

-C directory, --cd directory, --directory directory
    In c and r mode, this changes the directory before adding the following files.
    In x mode, change directories after opening the archive but before extracting
    entries from the archive.

Das bedeutet, dass Sie in der Lage sein sollten,

tar cvzf result.tar.gz -C /path/to/dir1/ . -C /path/to/dir2/ .

um zu erreichen, was Sie wollen.

Antwort2

Mit GNU tar können Sie die --transformOption zum Umschreiben von Dateinamen verwenden, wenn Sie sie zu einem Archiv hinzufügen oder daraus extrahieren. Mit BSD tar oder pax -sbewirkt die Option dasselbe.

So entfernen Sie die führende Verzeichniskomponente (so dass sie dir_1/subdir/somefileals gespeichert wird subdir/somefile):

tar -czf result.tar.gz --transform '!^[^/]*/!!' dir_1 dir_2

So entfernen Sie alle Verzeichniskomponenten (so dass sie dir_1/subdir/somefileals gespeichert werden somefile):

tar -czf result.tar.gz --transform '!^.*/!!' dir_1 dir_2

verwandte Informationen