Ответ 1
Я, наконец, получил его, с помощью @generalhenry (см. комментарии к вопросу) и
как указано в комментариях, нам нужно сжать папку в два этапа:
-
Преобразование папки в файл
.tar
-
Сжатие
.tar
файла
Для выполнения первого шага мне понадобилось два модуля node.js:
npm install tar
npm install fstream
Первый позволяет нам создавать файлы .tar
. Здесь вы можете получить доступ к исходному коду https://github.com/isaacs/node-tar
Второй модуль node поможет нам прочитать папку и записать файл. Что касается базового модуля fs
node.js, я не знаю, можно ли читать каталог (я не говорю о получении всех файлов в массиве, используя fs.readdir
, но обрабатывая все файлы и их организация в папках).
Затем, когда я конвертирую папку в файл .tar
, я могу сжать ее с помощью Gzip()
Zlib
.
Вот окончательный код:
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 */
Это помогло мне сжать всю папку с помощью node.js
Еще 2 вещи:
-
Как вы можете видеть, в модуле
tar
отсутствует документация. Я надеюсь, что это будет улучшено вскоре после того, как в двух приведенных примерах рассказывается о том, как извлечь контент из файла.tar
. -
Я использовал модуль
fstream
, чтобы помочь мне обработать исходный каталог. Можно ли это обойти с помощьюfs
? Я не знаю (пожалуйста, прокомментируйте, если у вас есть идея).