从特定目录中的文件创建tar文件

时间:2014-09-09 05:31:19

标签: node.js

我需要使用nodejs来创建一个不包含在父目录中的tar文件。

例如,这是文件系统:

/tmp/mydir
/tmp/mydir/Dockerfile
/tmp/mydir/anotherfile

我期待的事情就是相当于:

cd /tmp/mydir
tar -cvf archive.tar *

因此,当我提取archive.tar时,Dockerfile将最终出现在我执行命令的同一目录中。

我已经尝试了tar.gz和其他几个,但所有示例都在压缩整个目录,而不仅仅是文件。

我这样做,所以我可以利用Docker REST API发送构建。

3 个答案:

答案 0 :(得分:2)

使用现代模块node-tar,您可以创建一个.tar文件,如下所示:

tar.create(
    { file: 'archive.tar' },
    ['/tmp/mydir']
).then(_ => { .. tarball has been created .. })

不建议使用其他答案中引用的 tar.gz 模块。

答案 1 :(得分:1)

使用tar.gz模块。这是一个示例代码

var targz = require('tar.gz');
var compress = new targz().compress('/path/to/compress', '/path/to/store.tar.gz',
function(err){
         if(err)
         console.log(err);
         console.log('The compression has ended!');
});

如需更多选项,请访问documentation page

答案 2 :(得分:1)

构造函数的第二个参数作为属性传递给tar模块。

var TarGz = require('tar.gz');
var compressor = new TarGz({}, {fromBase: true});

这将使用创建没有顶级目录的存档。

编辑:这在node-tar.gz中没有记录,但拉取请求现已合并:https://github.com/alanhoff/node-tar.gz#tar-options