Erstellen Sie ein Archiv mit dem Befehl "gzip"

10

Ich muss ein Archiv mit dem Befehl gzip erstellen (nicht tar - es ist notwendig) und das Archiv sollte Dateien aus einem anderen Verzeichnis enthalten - zum Beispiel / etc. Ich habe versucht, Befehl zu verwenden

gzip myetc.gz /etc

Aber es hat nicht funktioniert.

Elisia Light
quelle
3
gzipist nicht zip. Es sind verschiedene Werkzeuge, die unterschiedlich funktionieren.
Roaima
3
gzipist nur Stream-Kompressor. Es kennt keine Dateien oder Verzeichnisse.
3
Warum kannst du keinen Teer verwenden?
Marcelm
Wenn Sie keinen Teer haben, haben Sie CPIO?
Rup
2
Sie möchten ein Archiv erstellen, können jedoch kein Teer verwenden. Sie wissen, dass ein Teil des Wortes "Teer" von "ARchive" stammt. Ich meine, das ist seine Daseinsberechtigung. Wer oder was möchte "tar" von einem Archivierungsprozess ausschließen? Grundsätzlich fragen Sie, wie man eine Schraube mit einem Hammer antreibt (kein Schraubendreher - es ist notwendig).
Mike S

Antworten:

5

Gzip funktioniert nur mit einer einzelnen Datei oder einem Stream - Daten, die an gzip weitergeleitet werden. Sie müssen also zuerst eine Datei generieren, wie bei tar, und dann können Sie diese gzipen. Die andere Möglichkeit besteht darin, alle einzelnen Dateien zu gzipen und diese dann in eine Datei zu tarieren.

Beide Lösungen sind dumm und sollten nicht verwendet werden. Sie sollten tar mit der integrierten Komprimierungsoption verwenden und alles in einem Befehl ausführen.

SPRBRN
quelle
1
Warum sollte die erste Methode dumm sein? Dies ist die übliche Art zu produzieren .tar.gz...
Rexkogitans
Naja dumm ist wohl nicht der richtige Begriff, aber statt gzip zu verwenden, wenn man tar mit der Option c verwenden kann. Es ist einfacher und ich glaube nicht, dass das Weiterleiten von Teer an gzip einen Vorteil hat.
SPRBRN
Gzip kann für mehrere Dateien mit der Option -r arbeiten, erstellt jedoch für jede Datei im Ordner eine neue .gz-Datei.
Luciano Andress Martini
1
@rekkogitans - es ist genauso cat filename | grep blahdumm wie dumm. Es ist auch viel weniger als optimal, da es einen großen Zwischenraum beanspruchen würde. Ich weiß nicht, ob ich es so dumm wie ungerechtfertigt, suboptimal und im Allgemeinen nur irgendwie hässlich nennen würde. Nun, dumm funktioniert auch.
Mike S
Oh, jetzt sehe ich, was so dumm ist. Nein, `tar -czf` ist der richtige Weg, da es sich nicht um einen Nutzlosen handelt fork().
Rexkogitans
12

gzipfunktioniert mit Dateien, nicht mit Verzeichnissen. Um ein Archiv eines Verzeichnisses zu erstellen, müssen Sie Folgendes verwenden tar(wodurch ein einzelner Tarball aus mehreren Dateien erstellt wird):

tar cvf myetc.tar /etc

oder für ein gezipptes Archiv:

tar cvzf myetc.tar.gz /etc
dr01
quelle
2
Wenn man ein "altes" System ohne die Option "-z" hat, kann cd / ; tar cf - ./etc | gzip -c - > myetc.tar.gz man Folgendes tun: (Wenn Sie sich fragen, warum ich "./etc" anstelle von "/ etc" tariere, liegt dies daran, dass auf diesen älteren Systemen tar verwendet wird xvf, es wird in / etc ausgegeben und überschrieben ... [oder Sie müssen in diesem Fall "pax" verwenden]). Inverser Befehl, dh das Archiv unter "/ irgendwo" zu extrahieren: cd /somewhere ; gzip -dc < /the/location/of/myetc.tar.gz | tar xvf -
Olivier Dulac
1

Wenn Sie wirklich keinen Tar zur Verfügung haben, können Sie mit gzip eine Sicherungskopie eines Verzeichnisses mit der Option (-r - rekursiv) erstellen, aber vielleicht ist es nicht genau das, was Sie erwarten ...

Zuerst müssen Sie Ihr Verzeichnis auf einen anderen Namen kopieren, wenn Sie das ursprüngliche Verzeichnis unberührbar lassen möchten.

#cp -a directory my_gzip_alone_backup

Zweitens komprimieren Sie alle Dateien im Verzeichnis rekursiv (-r).

#gzip -r my_gzip_alone_backup

Werfen wir nun einen Blick in das my-gzip-alone-Backup. Sie haben nicht eine einzige Datei myfile.gz, wie Sie es erwarten, sondern viele gziped-Dateien rekursiv. Aber es ist nicht gut, das mit etc zu machen, weil Symlinks ...

Um das Verzeichnis zu dekomprimieren, kann dieselbe Logik mit gunzip angewendet werden.

Eine andere Möglichkeit besteht darin, das Verzeichnis in eine einzelne Datei zu konvertieren, wenn Sie nicht über tar verfügen, sondern über das dd util verfügen, wie in diesem Beitrag gezeigt: /ubuntu/626634/converting-a -Datei-zu-Verzeichnis

Luciano Andress Martini
quelle