Skip to content
7
/ Guide/Tar
3/14/2024
1.3m
AI 摘要

本文介绍了 Linux 上 tar 命令的使用方法,包括解压到当前目录、指定目录及查看内容。同时,展示了 NodeJS 中使用 tar 库处理 tgz 流数据、打包文件及解压 Buffer 类型 tar.gz 的方法。重点突出 tar 命令和 tar 库在文件压缩与解压中的应用。

Tar

Linux 系统上的解压命令,通常用于解压 .tar.gz 或者 .tgz,二者是等价的

解压

解压到当前目录

$ tar -xzf common.tar.gz

解压到指定目录

$ mkdir test # 目录必须存在
$ tar -xzf common.tar.gz -C test

查看 tgz 内容

不解压,只查看 tgz 压缩了的文件名

$ tar -xvf common.tar.gz

nodejs tar

$ npm i tar

通过 pipe 直接解压来自接口的 tgz 流数据,并且写入本地文件系统

通过 pipe 直接解压来自接口的 tgz 流数据,并且写入本地文件系统

import { pipeline } from 'stream';
import { promisify } from 'node:util'
import Tar from 'tar'

const { data: stream } = await axios.get(`${host}/${api}`, {
    responseType: 'stream'
});
const pipe = promisify(pipeline)

return pipe(stream, Tar.x({
    C: './test',
}))

根据多个 path,打成压缩包

import { globSync } from 'glob';
import tar from 'tar';
import fse from 'fs/promise'

const paths = globSync('xxx', { cwd: context })

const tarPackage = tar.create(
    {
        gzip: true,
        cwd: context,
    },
    paths,
);

tarPackage.pipe(fse.createWriteStream('./test'))

Released under the MIT License.