Wie kann ich verschiedene Unterordner gleichzeitig komprimieren?

Wie kann ich verschiedene Unterordner gleichzeitig komprimieren?

Ich habe einen Ordner all_folders, der 5 Ordner enthält:

./all_folders
./all_folders/folder1
./all_folders/folder2
./all_folders/folder3
./all_folders/folder4
./all_folders/folder5

Kann ich alle diese Ordner gleichzeitig mit einem einzigen Befehl komprimieren? Ich möchte im all_foldersVerzeichnis sein und dann den Befehl ausführen, sodass einzelne Ordner in diesem Verzeichnis komprimiert werden.

Das erwartete Ergebnis ist

wenn ich das tue

ls 

in all_folders, dann sollte ich 10 Verzeichnisse haben. 5 unkomprimierte und 5 komprimierte.

Antwort1

cdin all_folders, dann ausführen

for i in folder1 folder2 folder3 folder4 folder5; do tar czf $i.tar.gz $i; done

Antwort2

Es ist nicht ganz klar, was Sie erreichen möchten. Ich gehe hier von dem Anwendungsfall aus, bei dem nur Unterverzeichnisse komprimiert werden sollen.

Gehen Sie zunächst in das Verzeichnis, das die Verzeichnissammlung enthält, und dann:

find -maxdepth 1 -type d | {
    while read dir; do 
        if [ ! "x${dir#*/}" = "x." ]; then
            tar cJf ${dir#*/}.tar.xz ${dir#*/};
        fi;
    done
}

Dies funktioniert gut mit zsh. Um Dinge zu testen, setzen Sie ein echovor tar, um zu sehen, ob der Befehl funktioniert usw.

Allerdings ist es normalerweise nicht wünschenswert, eine solche Sammlung von Archiven zu erstellen. Normalerweise möchten Sie entweder die gesamte Sammlung komprimieren, eine transparente Komprimierung des Laufwerks verwenden, auf dem sich diese Dateien befinden, oder eine Transportkomprimierung ( X-DEFLATEbeispielsweise mit HTTP) verwenden.

Bitte beachten Sie, dass Sie am Ende kein "komprimiertes Verzeichnis", sondern ein "komprimiertes Archiv" erhalten. Diese Dinge sind nicht austauschbar, da Archive selbst Dateien sind, während Verzeichnisse bloßeInodeDatagramme.

Antwort3

tar -zcvf archive.tar.gz directory/ 

Dadurch wird tar angewiesen, aus den Dateien im Verzeichnis ein Archiv zu erstellen (tar ist standardmäßig rekursiv), es mit dem Algorithmus z (gzip) zu komprimieren, die Ausgabe als Datei af mit dem Namen archive.tar.gz zu speichern und alle Dateien, die es dem Archiv hinzufügt, ausführlich aufzulisten (v).

Zum Dekomprimieren und Entpacken des Archivs in das aktuelle Verzeichnis verwenden Sie

tar -zxvf archive.tar.gz 

Bildbeschreibung hier eingeben

verwandte Informationen