tar-fs
filesystem bindings for tar-stream.
npm install tar-fs
![build status](https://secure.travis-ci.org/mafintosh/tar-fs.png)
Usage
tar-fs allows you to pack directories into tarballs and extract tarballs into directories.
var tar = require('tar-fs');
var fs = require('fs');
tar.pack('./my-directory').pipe(fs.createWriteStream('my-tarball.tar'));
fs.createReadStream('my-other-tarball.tar').pipe(tar.extract('./my-other-directory'));
To ignore various files when packing or extracting add a ignore function to the options
var pack = tar.pack('./my-directory', {
ignore: function(name) {
return path.extname(name) === '.bin';
}
});
var extract = tar.extract('./my-other-directory', {
ignore: function(name) {
return path.extname(name) === '.bin';
}
});
Copy a directory
Copying a directory with permissions and mtime intact is as simple as
tar.pack('source-directory').pipe(tar.extract('dest-directory'));
Performance
Packing/extracting a 6.1 GB with 2496 directories and 2398 files yields the following results on my Macbook Air
- tar-fs: 34.261 ms
- node-tar: 366.123 ms
- native tar command: 47.241 ms (this one is a bit unfair as it is piping through processes)
License
MIT