节点stream和处理通过FTP压缩内容

我的服务器上有一个大的压缩文件10gb +我无法在本地机器上保存压缩文件。 我想stream压缩的内容到我的服务器上(通过FTP),解压内容块的块,并处理每个块/线。

基本上我的挑战和问题是:我可以使用压缩文件的每个stream块并独立解压缩它们吗? 或者我必须下载整个文件? 有没有一个节点库来处理这个问题?

如果可以将压缩文件更改为gzip文件,则可以。 从我读的这是不可能的一个Zip文件。 如此处所述: Java:通过HTTP传输Zipfile的内容

所以我决定考虑使用GZip文件,GZip看起来相当简单。

如果只有没有zip字典的压缩文件,也许你可以试试这个

fs.createReadStream(`${craneProjectDir}/tree`) .pipe(zlib.createUnzip()) .pipe(fs.createWriteStream('myfile')) 

https://nodejs.org/api/zlib.html#zlib_zlib_createunzip_options

如果它有一个字典,这是一个压缩文件的常规,你可以试试这个

https://github.com/antelle/node-stream-zip

作为例子非常大,我邀请您检查自述文件

要通过FTP读/写文件,我邀请您使用卓越的mscdex库

https://github.com/mscdex/node-ftp

  var Client = require('ftp'); var fs = require('fs'); var c = new Client(); c.on('ready', function() { c.get('foo.txt', function(err, stream) { if (err) throw err; stream.once('close', function() { c.end(); }); stream.pipe(fs.createWriteStream('foo.local-copy.txt')); }); }); // connect to localhost:21 as anonymous c.connect(); 

所以是的,这应该是可行的。