Wie kann ich ein Verzeichnis gunzipen?

55970
chaimp

Ich habe ein gzipped-Verzeichnis namens "new", das andere Verzeichnisse und Dateien enthält, die ich folgendermaßen komprimiert habe

gzip -cvr --no-name /path-to-directory/new > new.gz 

Ich habe diese> 700MB an einen anderen Ort (auf einem anderen Server) kopiert und möchte sie jetzt auspacken. Also auf dem neuen Server gehe ich in das Verzeichnis hat "neu" und verwende es

gzip new 

Das Ergebnis ist eine einzige 880-MB-Datei - keine Verzeichnisse oder kleineren Dateien.

Was habe ich falsch gemacht und wie kann ich das korrigieren?

Vielen Dank.

6

3 Antworten auf die Frage

15
Quentin

Gzip komprimiert Dateien, keine Verzeichnisse. Wenn Sie ein Verzeichnis komprimieren möchten, müssen Sie zunächst ein Tarball erstellen. Sie können einen Tarball erstellen und in einem Schritt komprimieren.

tar cvzf tarball.tar.gz directory/ 

(erstellen, verbose, gZip, zu dieser Datei)

um den Prozess umzukehren

tar xvzf tarball.tar.gz 

(Extrakt)

Was ist der Sinn von gzip -r dann? chaimp vor 14 Jahren 0
@jeffp: `gzip -r` wechselt in Verzeichnisse und gzip alle darin enthaltenen Dateien. Es wird keine einzige GZIP-Datei erstellt, die den Inhalt dieser Verzeichnisse enthält. Wenn Sie beispielsweise "dir1" mit "foo" und "bar" und "dir2" mit "baz" haben und "gzip -r dir1 dir2" ausführen, erhalten Sie am Ende folgendes: "dir1 / foo.gz". "dir1 / bar.gz" "dir2 / baz.gz" quack quixote vor 14 Jahren 0
@jeffp: Beachten Sie die Ergebnisse Ihres Befehls in meinem Beispiel: `gzip -cvr --no-names dir *> new.gz` ... jetzt enthält" new.gz "dasselbe wie 'cat dir1 / foo.gz' dir1 / bar.gz dir2 / baz.gz> new.gz`. Es sind nur 3 Dateien komprimierte Daten im Wert. Dem Dekompressor ist nichts über einzelne Dateien zu sagen. __use tar__. quack quixote vor 14 Jahren 0
2
Geoff Fritz
tar cf - directory | gzip -9c > foo.tar.gz 

Dann kopiere das wie vorher, dann mache es umgekehrt:

tar xzf foo.tar.gz 

Wenn Sie SSH zum Übertragen der Dateien verwenden, können Sie den Zwischenschritt zum Speichern und Übertragen einer Datei überspringen:

tar cf - directory | gzip -9c | ssh user@hostname "cd /destdir ; tar xzvf -" 

Dies ist besonders hilfreich, wenn Ihre resultierende TAR-Datei sehr groß ist und möglicherweise nicht zusammen mit den unkomprimierten Daten in die Zielpartition passt. In diesem Fall ist die Verwendung von rsync ohnehin besser.

1
Lokal

Es hört sich an, als hätten Sie tar (mit der Option gzip) verwenden sollen:

# -z : pipe through gzip # -cf : create file tar -zcf new.tgz /path-to-directory 

dann mit der resultierenden Datei new.tgz:

# z : gzip # x : extract # p : keep permissions tar zxpf new.tgz 

BEARBEITEN

Was ist der Sinn von gzip -r dann? - Jeff vor 37 Minuten

gzip ist ein Stream-Kompressor - er betrachtet nicht wirklich den Inhalt dessen, was Sie komprimieren, über das, was er tun muss, um ihn zu verkleinern, sodass er keine Verzeichnisse kennt.

Nur als Randnotiz finde ich, dass bzip2 die Kompression viel besser erledigt als gzip - wenn auch langsamer.

# -j : pipe through bzip2 # -cf : create file tar -jcf new.tar.bzip2 /path-to-directory  bunzip2 new.tar.bzip2