2012-09-08 1 views
150

Mögliche Duplizieren:
gzipping up a set of directories and creating a tar compressed fileWie gzip alle Dateien in allen Unterverzeichnissen in eine komprimierte Datei in bash

This post beschreibt, wie jede Datei in einer Verzeichnisstruktur individuell auf gzip. Ich muss jedoch etwas anderes machen. Ich muss eine große gzip-Datei für alle Dateien in einem bestimmten Verzeichnis erstellen. Ich muss auch in der Lage sein, den Ausgabedateinamen für die komprimierte Datei (z. B. files.gz) anzugeben und die alte komprimierte Dateidatei zu überschreiben, wenn eine bereits existiert.

+0

'gzip' seiner Natur komprimiert nur eine einzige Datei. Um mehrere Dateien in eine Datei für das nachfolgende Gippen einzufügen, verwenden Sie 'tar'. – Thomas

Antwort

310
tar -zcvf compressFileName.tar.gz folderToCompress 

alles in folderToCompress wird

bearbeiten zu compressFileName gehen: Nach der Überprüfung und Kommentare Ich erkannte, dass Menschen mit compressFileName verwirren kann ohne Erweiterung. Wenn Sie möchten, können Sie .tar.gz Erweiterung (wie vorgeschlagen) mit dem compressFileName verwenden

+1

Danke. Komprimiert dies alles unter "folderToCompress" (d. H. Rekursiv)? – Doug

+1

alles in folderToCompress wird zu compressFileName gehen – amitchhajer

+73

Sie werden wahrscheinlich 'compressFileName' wählen, so dass es die Erweiterung' .tar.gz' enthält oder Sie werden alle anderen verrückt machen. – drewish

15

@amitchhajer Post arbeitet für GNU tar. Wenn jemand diesen Beitrag findet, und es muss auf einem nicht GNU System arbeiten, können sie dies tun:

tar cvf - folderToCompress | gzip > compressFileName 

das Archiv zu erweitern:

zcat compressFileName | tar xvf - 
+2

Diese Lösung ist nicht nur portabel, sondern auch nützlich, wenn Sie Argumente an gzip übergeben möchten (zB --test oder --best), seit afaik sogar GNU tar bietet keine Möglichkeit, Argumente an gzip zu senden. –

+0

Dies ist vielseitig, da Sie auch andere Kompressoren verwenden können. Zum Beispiel 'pigz', das schneller ist, da es die CPU besser nutzen kann (eine Multi-Thread-Implementierung von zip). –

51

es viele Komprimierungsmethoden, die rekursiv arbeiten Befehl Linie und es ist gut zu wissen, wer das Zielpublikum ist.

dh wenn es dann jemand mit Windows gesendet werden soll zip wahrscheinlich am besten wäre: tar

zip -r file.zip folder_to_zip 

unzip filenname.zip 

für andere Linux-Benutzer oder Ihre Selbst

tar -cvzf filename.tar.gz folder 

tar -cvjf filename.tar.bz2 folder # even more compression 

#change the -c to -x to above to extract 

Man muss vorsichtig ist groß sein mit Teer und wie Sachen geteert/extrahiert werden, zum Beispiel wenn ich renne

/home/myusername

tar -xvzf passwd.tar.gz 

dies /home/myusername/etc/passwd

unsicher erstellen, wenn alle Versionen von tar dies zu tun:

Removing leading `/' from member names 
+4

+1 für linux-> windows –