【问题标题】:Node: adding a string as a file into a tar archive (without temporary files)节点:将字符串作为文件添加到 tar 存档中(没有临时文件)
【发布时间】:2014-03-10 22:40:12
【问题描述】:
我想在 node.js 中创建一个 tar 存档。 canonical tar archiving example 是基于文件流的:
fstream
.Reader({path: 'src', type: "Directory"})
.pipe(tar.Pack())
.pipe(zlib.createGzip())
.pipe(fstream.Writer("output.tar.gz"));
我的数据实际上是作为字符串在内存中的,我想将其写入存档,而不必在两者之间创建一个临时文件。
有什么方法可以做到这一点,例如也许用字符串制作一个fstream?
【问题讨论】:
标签:
javascript
node.js
tar
【解决方案1】:
tar-async 模块可以非常简单地处理这个问题,无需制作假流:
var uploadArchive = new Tar({output: fs.createWriteStream('archive.tar')});
uploadArchive.append('somefile.txt', 'someString', function() {
tape.close();
});
【解决方案2】:
tar-stream 模块也可以做到这一点:
var tar = require('tar-stream')
var content = "whatever string you have"
var pack = tar.pack()
pack.entry({name: 'src', type: 'directory'})
pack.entry({name: 'src/someFile.txt'}, content) // file
pack.finalize()
tar-stream 也可以使用流作为文件内容的来源。