0%

linux压缩解压缩

Linux 压缩与解压缩命令全指南:从基础到高效用法

在 Linux 系统中,压缩和解压缩文件是日常操作的重要组成部分,无论是备份数据、传输文件还是节省存储空间,都离不开这些工具。本文将详细解析 zipgzipbzip2tar 等命令的用法,涵盖常见压缩格式(zipgzbz2tar.gztar.bz2)的操作技巧。

ZIP 格式:跨平台兼容的压缩格式

ZIP 是 Windows 和 Linux 通用的压缩格式,支持多文件和目录压缩,兼容性极强。

压缩文件 / 目录

1
2
3
4
# 基本语法:zip [选项] 压缩包名 待压缩文件/目录
zip archive.zip file1.txt file2.txt # 压缩多个文件到 archive.zip

zip -r dir_archive.zip /path/to/dir # 压缩目录(-r 表示递归)

选项说明

  • -r:递归压缩目录(必须添加,否则无法压缩子目录)。
  • -q:安静模式(不显示压缩过程)。
  • -9:最高压缩率(默认是 -6,数值越高压缩率越高,但速度越慢)。

解压缩 ZIP 文件

1
2
3
4
# 基本语法:unzip [选项] 压缩包名
unzip archive.zip # 解压到当前目录

unzip archive.zip -d /target/dir # 解压到指定目录(-d 指定路径)

选项说明

  • -d 路径:指定解压目录(目录需存在)。
  • -l:查看压缩包内文件列表(不解压)。
  • -o:覆盖已存在文件(不提示)。

GZ 格式:Linux 常用的轻量压缩格式

gzip 是 Linux 原生的压缩工具,压缩率适中,速度较快,但不支持压缩目录,且压缩后会删除源文件。

压缩文件

1
2
3
4
# 基本语法:gzip [选项] 源文件
gzip file.txt # 压缩 file.txt 为 file.txt.gz(源文件被删除)

gzip -k file.txt # 压缩后保留源文件(-k 表示 keep)

选项说明

  • -k:保留源文件(默认删除)。
  • -v:显示压缩率(如 file.txt: 50.0% -- replaced with file.txt.gz)。
  • -1-9:调整压缩率(-1 最快,-9 压缩率最高)。

解压缩 GZ 文件

1
2
3
4
5
# 方法 1:使用 gzip 解压缩
gzip -d file.txt.gz # 解压为 file.txt(压缩包被删除)

# 方法 2:使用 gunzip(gzip 的快捷命令)
gunzip file.txt.gz # 等价于 gzip -d

注意gzip 仅能压缩单个文件,若需压缩目录,需先通过 tar 打包(见下文 tar.gz 格式)。

BZ2 格式:高压缩率的压缩格式

bzip2 压缩率高于 gzip,但速度较慢,同样不支持压缩目录,默认删除源文件。

压缩文件

1
2
3
4
# 基本语法:bzip2 [选项] 源文件
bzip2 data.txt # 压缩为 data.txt.bz2(源文件被删除)

bzip2 -k data.txt # 保留源文件

选项说明

  • -k:保留源文件(默认删除)。
  • -v:显示压缩信息(如 data.txt: 60.0%)。

解压缩 BZ2 文件

1
2
3
4
5
# 方法 1:使用 bzip2 解压缩
bzip2 -d data.txt.bz2 # 解压为 data.txt

# 方法 2:使用 bunzip2(bzip2 的快捷命令)
bunzip2 data.txt.bz2 # 等价于 bzip2 -d

TAR 格式:打包工具(非压缩)

tar 本身是打包工具(将多个文件 / 目录合并为一个文件),不具备压缩功能,但可与 gzipbzip2 结合,实现 “打包 + 压缩” 一体化操作。

打包文件 / 目录

1
2
# 基本语法:tar [选项] -f 打包文件名 待打包文件/目录
tar -cvf archive.tar file1.txt dir1/ # 打包 file1.txt 和 dir1 为 archive.tar

选项说明

  • -c:创建新包(打包)。
  • -v:显示打包过程(verbose)。
  • -f 文件名:指定打包文件名(必须放在选项末尾)。
  • --exclude 文件名:排除指定文件(如 tar -cvf archive.tar --exclude "*.log" dir1/)。

解打包 TAR 文件

1
2
3
tar -xvf archive.tar  # 解打包到当前目录

tar -xvf archive.tar -C /target/dir # 解打包到指定目录(-C 表示 change directory)

选项说明

  • -x:解打包。
  • -t:查看包内文件列表(不解包,如 tar -tf archive.tar)。

TAR.GZ 和 TAR.BZ2 格式:打包 + 压缩的组合格式

由于 gzipbzip2 不支持压缩目录,实际使用中通常先通过 tar 打包,再用 gzipbzip2 压缩,形成 tar.gz(或 .tgz)、tar.bz2 格式。

TAR.GZ 格式(tar + gzip)

压缩
1
2
# 基本语法:tar -zcvf 压缩包名 待压缩文件/目录
tar -zcvf docs.tar.gz /path/to/docs # 打包并压缩目录
  • -z:启用 gzip 压缩(识别 .tar.gz 格式)。
解压缩
1
2
3
tar -zxvf docs.tar.gz  # 解压到当前目录

tar -zxvf docs.tar.gz -C /target/dir # 解压到指定目录

TAR.BZ2 格式(tar + bzip2)

压缩
1
2
# 基本语法:tar -jcvf 压缩包名 待压缩文件/目录
tar -jcvf data.tar.bz2 file1.txt dir2/ # 打包并压缩
  • -j:启用 bzip2 压缩(识别 .tar.bz2 格式)。
解压缩
1
tar -jxvf data.tar.bz2  # 解压到当前目录

两种格式的对比

格式 压缩工具 压缩率 速度 适用场景
tar.gz gzip 中等 较快 日常备份、一般文件压缩
tar.bz2 bzip2 较高 较慢 追求高压缩率(如大文件备份)

实用技巧与注意事项

  1. 查看压缩包内容(不解压)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    # ZIP 格式
    unzip -l archive.zip

    # GZ 格式(需结合 zcat)
    zcat file.txt.gz # 查看内容(相当于解压后 cat)

    # TAR 相关格式
    tar -ztf docs.tar.gz # 查看 tar.gz 内容
    tar -jtf data.tar.bz2 # 查看 tar.bz2 内容
  2. 批量压缩 / 解压

    1
    2
    3
    4
    5
    # 批量压缩当前目录的 .txt 文件为单独的 .gz
    for file in *.txt; do gzip -k $file; done

    # 批量解压当前目录的 .tar.gz 文件
    for file in *.tar.gz; do tar -zxvf $file; done
  3. 压缩率与速度权衡

    • 追求速度:选择 tar.gz 并使用 -1 选项(如 tar -zcvf -1 fast.tar.gz dir/)。
    • 追求压缩率:选择 tar.bz2tar.gz -9
  4. 避免覆盖文件

    • 解压前先查看压缩包内容,确认是否有重名文件。
    • 使用 -o 选项(如 unzip -otar -zxvf --overwrite)强制覆盖(谨慎使用)。

欢迎关注我的其它发布渠道