Skip to content

压缩 & 解压缩

压缩

*.gz

.tar

shell
tar -cvf *.tar [File]...

.tar.gztgz

shell
tar -czvf *.tar.gz [File]...
tar -czvf *.tgz [File]...

解压

.tar

shell
tar -xvf *.tar

.tar.gz.tgz

shell
tar -zxvf *.tar.gz

.tar.xz

shell
xz -d *.tar.xz
tar -xvf *.tar

tar 命令详解

可将一个或者多个文件和文件夹打包为一个文件。

tar [OPTION...] [FILE]...

关键参数

  • -c: 打包文件

  • -x: 提取文件(提取文件会覆盖原本存在的文件

  • -f: 对于打包文件则是指定打包的文件(未存在的,对于已存在的文件会被覆盖),对于提取文件也是指定打包的文件(已存在的)

  • -v | -p: 这是一对选项,默认不传是 -p,使用 -v 则会显示详细的打包过程。

    对于 -t 命令,-v 会显示更详细的信息,类似 ls -l 的输出。

  • -C:

    • -c 组合:表示修改当前目录位置,从而不用切换到指定目录

      示例:tar -cf test.tar -C /bin . 可直接将根目录的 bin 文件夹打包

    • -t 组合:几乎没什么作用
    • -x 组合:表示指定解压文件到什么目录内

      示例:tar -xf test.tar -C /tmp . 可直接将文件解压到 tmp 文件夹进行处理

  • -z: 使用 gzip 格式压缩或者解压缩文件,即和 -c 组合表示压缩,和 -x 组合表示解压

  • -j: 使用 bzip2 格式压缩或者解压缩文件,即和 -c 组合表示压缩,和 -x 组合表示解压

  • --exclude=PATTERN: 使用一个 PATTERN 排除文件

zip 和 unzip 命令详解

zip 负责可将一个或者多个文件和文件夹打包为一个 zip 文件。 unzip 负责可将 zip 文件解压。

shell
yum install zip unzip

zip

shell
zip [选项] 压缩文件名.zip 源文件或目录

常用选项:

  • -r: 递归的将目录下的所有文件和子目录都打包到 zip 文件中
    示例

    目录结构:

    txt
    .
    ├── dir1
    │   └── file2
    └── file1

    不使用 -r 进行打包:

    shell
    zip test.zip *
    unzip -v test.zip

    输出为:

    txt
    Archive:  test.zip
    Length   Method    Size  Cmpr    Date    Time   CRC-32   Name
    --------  ------  ------- ---- ---------- ----- --------  ----
           0  Stored        0   0% 07-23-2024 01:58 00000000  dir1/
           0  Stored        0   0% 07-23-2024 01:58 00000000  file1
    --------          -------  ---                            -------
           0                0   0%                            2 files

    使用 -r 进行打包:

    shell
    zip -r test.zip *
    unzip -v test.zip

    输出为:

    txt
    Archive:  test.zip
    Length   Method    Size  Cmpr    Date    Time   CRC-32   Name
    --------  ------  ------- ---- ---------- ----- --------  ----
           0  Stored        0   0% 07-23-2024 01:58 00000000  dir1/
           0  Stored        0   0% 07-23-2024 01:58 00000000  dir1/file2
           0  Stored        0   0% 07-23-2024 01:58 00000000  file1
    --------          -------  ---                            -------
           0                0   0%                            3 files
  • -q: 不显示打包过程
  • -v: 显示详细的打包过程
  • -m: 文件打包后删除源文件
  • -u: 更新 zip 里的文件
  • -d: 从 zip 中删除文件
  • -X: 压缩级别(1-9)
  • -P: 设置压缩密码

unzip

shell
unzip [选项] 压缩文件名.zip

常用选项:

  • -v: 不执行打包,显示压缩包内容
  • -q: 静默输出,不显示解压过程
  • -d: 指定解压路径