如何使用NodeJS及archiver库将10GB压缩包拆分为5个2GB小文件
使用archiver实现大文件分卷压缩
要实现将大文件分割为多个指定大小的分卷zip文件,你可以利用archiver的volumeSize配置项,直接在初始化archiver实例时指定分卷大小。以下是具体实现代码:
var fs = require('fs'); var archiver = require('archiver'); // 定义分卷大小,2GB = 2 * 1024 * 1024 * 1024 字节 const VOLUME_SIZE = 2 * 1024 * 1024 * 1024; // 创建输出流的基础路径,分卷会自动命名为 test.zip.001、test.zip.002... var output = fs.createWriteStream('./test.zip'); var archive = archiver('zip', { gzip: true, zlib: { level: 9 }, volumeSize: VOLUME_SIZE // 设置分卷大小 }); archive.on('error', function(err) { throw err; }); // 监听分卷切换事件,可用于日志记录(可选) archive.on('volume', function(volume) { console.log(`已创建分卷:${volume.path}`); }); archive.pipe(output); // 添加需要压缩的大文件 archive.file('large-file.zip', {name: 'large-file.zip'}); archive.finalize();
关键说明:
volumeSize参数接受字节数,这里设置为2GB的字节值,archiver会自动将压缩后的内容分割为多个不超过该大小的分卷文件。- 分卷文件的命名规则为:基础文件名 +
.001、.002……依次递增,比如示例中的test.zip.001、test.zip.002等。 - 解压时需要将所有分卷文件放在同一目录下,使用支持分卷zip解压的工具(如WinRAR、7-Zip)即可合并还原为完整文件。
内容的提问来源于stack exchange,提问作者Dekillston
相关产品推荐
相关产品推荐

