6

パスがわかっている場合、複数のディレクトリをアーカイブすることは可能ですか? 言いましょう: ['/dir1','dir2', .., 'dirX']. 私が今していることは、ディレクトリを単一のディレクトリにコピーすることです。たとえば/dirToZip、次のようにします。

var archive = archiver.create('zip', {});
archive.on('error', function(err){
    throw err;
});
archive.directory('/dirToZip','').finalize(); 

大量に必要な特定のパターンではなく、ディレクトリをアーカイブに追加するアプローチはありますか? 前もって感謝します!

4

3 に答える 3

8

使用できますbulk(mappings)。試す:

var output = fs.createWriteStream(__dirname + '/bulk-output.zip');
var archive = archiver('zip');

output.on('close', function() {
    console.log(archive.pointer() + ' total bytes');
    console.log('archiver has been finalized and the output file descriptor has closed.');
});

archive.on('error', function(err) {
    throw err;
});

archive.pipe(output);

archive.bulk([
    { expand: true, cwd: 'views/', src: ['*'] },
    { expand: true, cwd: 'uploads/', src: ['*'] }
]);

archive.finalize();

更新しました

または、さらに簡単に実行できます。

var output = fs.createWriteStream(__dirname + '/bulk-output.zip');
var archive = archiver('zip');

output.on('close', function() {
    console.log(archive.pointer() + ' total bytes');
    console.log('archiver has been finalized and the output file descriptor has closed.');
});

archive.on('error', function(err) {
    throw err;
});

archive.pipe(output);

archive.directory('views', true, { date: new Date() });
archive.directory('uploads', true, { date: new Date() });

archive.finalize();
于 2015-12-17T14:52:29.650 に答える
3

同じ問題を抱えているすべての人に、最終的に私にとってうまくいったのは、次の構造を持っているとしましょう:

/ユーザー/x/デスクトップ/tmp

| | __ dir1

| | __ dir2

| | __ dir3

var baseDir = '/Users/x/Desktop/tmp/';
var dirNames = ['dir1','dir2','dir3']; //directories to zip

var archive = archiver.create('zip', {});
archive.on('error', function(err){
    throw err;
});

var output = fs.createWriteStream('/testDir/myZip.zip'); //path to create .zip file
output.on('close', function() {
    console.log(archive.pointer() + ' total bytes');
    console.log('archiver has been finalized and the output file descriptor has closed.');
});
archive.pipe(output);

dirNames.forEach(function(dirName) {
    // 1st argument is the path to directory 
    // 2nd argument is how to be structured in the archive (thats what i was missing!)
    archive.directory(baseDir + dirName, dirName);
});
archive.finalize();
于 2015-12-18T15:01:05.367 に答える