ich es endlich habe, mit Hilfe von @generalhenry (siehe Bemerkungen zu der Frage) und
wie in den Kommentaren erwähnt, müssen wir den Ordner, in zwei Schritten komprimieren:
Konvertieren Sie den Ordner in eine Datei .tar
die
.tar
Datei komprimieren
Um den ersten Schritt auszuführen, brauchte ich zwei node.js Module:
npm install tar
npm install fstream
Die ersten uns .tar
Dateien erstellen kann. Sie können hier auf den Quellcode zugreifen https://github.com/isaacs/node-tar
Das zweite Knotenmodul hilft uns, einen Ordner zu lesen und eine Datei zu schreiben. Was das grundlegende Modul fs
node.js betrifft, weiß ich nicht, ob es möglich ist, ein Verzeichnis zu lesen (ich spreche nicht davon, alle Dateien in einem Array unter Verwendung von fs.readdir
zu bekommen, sondern alle Dateien und ihre Organisation in Ordnern zu behandeln).
Wenn ich dann den Ordner in .tar
Datei umwandel, kann ich es mit Gzip()
von Zlib
komprimieren. Hier
ist der endgültige Code:
var fstream = require('fstream'),
tar = require('tar'),
zlib = require('zlib');
fstream.Reader({ 'path': 'path/to/my/dir/', 'type': 'Directory' }) /* Read the source directory */
.pipe(tar.Pack()) /* Convert the directory to a .tar file */
.pipe(zlib.Gzip()) /* Compress the .tar file */
.pipe(fstream.Writer({ 'path': 'compressed_folder.tar.gz' })); /* Give the output file name */
Das half mir einen ganzen Ordner mit node.js zu komprimieren
2 weitere Dinge:
Wie Sie sehen können, gibt ist ein Mangel an Dokumentation auf tar
Modul. Ich hoffe, dass dies bald verbessert wird, da die zwei Beispiele, die bereitgestellt wurden, darüber sprechen, wie Inhalte aus der Datei .tar
extrahiert werden können.
Ich habe das Modul fstream
verwendet, um mit dem Quellverzeichnis umzugehen. Kann dies unter Verwendung von fs
umgangen werden? Ich weiß es nicht (bitte kommentieren Sie, wenn Sie eine Idee haben).
Zlib ist nur Commression, Sie wollen einen Ordner tar dann komprimieren Sie es, die ganze tar.gz Sache, versuchen Sie https://github.com/isaacs/node-tar – generalhenry
Oh, ich verstehe! Also, ich muss es in zwei Schritten tun: 1/Konvertiere den Ordner in eine '.tar' Datei, dann 2/Komprimiere die' .tar' Datei in '.tar.gz' mit der Zlib. Das 'node-tar' Modul ist nicht sehr gut dokumentiert, haben Sie zusätzliche Ressourcen? – htaidirt
Ich schaute, das Beste, was ich fand, ist https://github.com/cthackers/adm-zip – generalhenry