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.
gzip
ist nichtzip
. Es sind verschiedene Werkzeuge, die unterschiedlich funktionieren.gzip
ist nur Stream-Kompressor. Es kennt keine Dateien oder Verzeichnisse.Antworten:
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.
quelle
.tar.gz
...cat filename | grep blah
dumm 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.fork()
.gzip
funktioniert mit Dateien, nicht mit Verzeichnissen. Um ein Archiv eines Verzeichnisses zu erstellen, müssen Sie Folgendes verwendentar
(wodurch ein einzelner Tarball aus mehreren Dateien erstellt wird):oder für ein gezipptes Archiv:
quelle
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 -
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.
Zweitens komprimieren Sie alle Dateien im Verzeichnis rekursiv (-r).
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
quelle