You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js使用tar压缩时如何排除父目录仅压缩指定文件夹

Node.js tar工具压缩文件夹时去除父目录层级的解决方法

你的问题出在tar.create的文件列表参数传了绝对路径——即使设置了cwd,绝对路径也会直接忽略这个工作目录配置,导致归档里带上完整的路径层级。

正确的处理方式:

  • 保持cwd设为archive文件夹所在的父目录(也就是你当前配置的/var/folders/fy/8xtt5hmn4_db7rc0b4rkvd2h0000gp/T)
  • 把第二个参数的绝对路径改成相对路径['archive'],因为cwd已经切换到目标父目录,tar会直接从这个目录下读取archive文件夹进行压缩

另外注意:你设置了noDirRecurse: true,这个参数会让tar只压缩archive目录本身,不会递归压缩里面的子文件和子目录。如果需要把archive里的所有内容都打包,要去掉这个参数或者设为false。

调整后的代码如下:

tar.create(
    {
        cwd: '/var/folders/fy/8xtt5hmn4_db7rc0b4rkvd2h0000gp/T',
        // 如果需要递归压缩子内容,去掉下面这行或者设为false
        // noDirRecurse: true,
        file: '/var/folders/fy/8xtt5hmn4_db7rc0b4rkvd2h0000gp/T/archive.tgz'
    },
    ['archive'] // 这里改成相对路径
).then(_ => { functions.logger.log('tgz file created'); })

这样生成的归档文件里就只会有archive文件夹及其内容,不会带上前面的路径层级了。

内容的提问来源于stack exchange,提问作者JoergP

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 14:01:15