节点:将字符串作为文件添加到tar存档中(不包含临时文件)

时间:2014-02-12 14:28:51

标签: javascript node.js tar

我想在节点中创建一个tar存档。 canonical tar archiving example基于文件流:

fstream
  .Reader({path: 'src', type: "Directory"})
  .pipe(tar.Pack())
  .pipe(zlib.createGzip())
  .pipe(fstream.Writer("output.tar.gz"));

我的数据实际上是作为字符串存储在内存中,我想写入存档而不必在其间制作临时文件。

我有什么方法可以做到这一点,例如也许用字符串制作一个fstream?

2 个答案:

答案 0 :(得分:3)

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也可以使用流作为文件内容的来源。

答案 1 :(得分:1)

tar-async模块可以非常简单地处理这个问题,而无需制作假流:

var uploadArchive = new Tar({output: fs.createWriteStream('archive.tar')});
uploadArchive.append('somefile.txt', 'someString', function() {
  tape.close();
});