Linux 压缩与解压完全指南


Linux 压缩与解压完全指南

基础介绍

压缩 (Compression)

压缩是一种通过算法减少文件大小的技术,从而节省存储空间和带宽。压缩的原理是消除数据中的冗余信息,将文件转换成更小的格式。

工作原理简图:

1
原始数据 --> 压缩算法 --> 压缩后的数据

在Linux系统中,压缩主要用于:

  • 节省磁盘空间。
  • 方便文件传输(例如通过网络)。
  • 创建归档文件,便于备份和管理。

解压 (Decompression)

解压缩是压缩的逆过程,将压缩后的文件恢复为原始文件。

工作原理简图:

1
压缩后的数据 --> 解压算法 --> 原始数据

常用命令

命令 参数 说明 频率
gzip -d (解压), -l (列出压缩文件信息), -r (递归处理目录), -v (显示详细信息) 使用DEFLATE算法压缩文件,生成 .gz 文件。解压使用 gzip -dgunzip ★★★☆
gunzip 解压 .gz 文件,等同于 gzip -d ★★★☆
tar -c (创建归档), -x (解开归档), -v (显示详细信息), -f (指定文件名), -z (使用gzip), -j (使用bzip2), -J (使用xz), -t (列出归档内容) 将多个文件或目录打包成一个归档文件(.tar),常与 gzip, bzip2, xz 等压缩工具结合使用。 ★★★★
bzip2 -d (解压), -k (保留原文件), -z (压缩), -v (显示详细信息) 使用Burrows-Wheeler算法压缩文件,生成 .bz2 文件。压缩率通常比 gzip 高,但速度较慢。解压使用 bzip2 -dbunzip2 ★★☆☆
bunzip2 解压 .bz2 文件,等同于 bzip2 -d ★★☆☆
xz -d (解压), -k (保留原文件), -z (压缩), -v (显示详细信息), -T (指定线程数) 使用LZMA2算法压缩文件,生成 .xz 文件。压缩率通常比 gzipbzip2 更高,但速度也更慢。解压使用 xz -dunxz ★☆☆☆
unxz 解压 .xz 文件,等同于 xz -d ★☆☆☆
zip -r (递归处理目录), -e (加密) 创建 .zip 格式的压缩文件。 ★★☆☆
unzip 解压 .zip 格式的压缩文件。 ★★☆☆

⚠️ 高危操作警告: 使用 -r 参数递归处理目录时,请务必确认操作对象,避免误删或覆盖重要文件。

示例代码

场景 1:使用 gzip 压缩和解压单个文件

  1. 压缩文件:
1
gzip my_document.txt

这将生成一个名为 my_document.txt.gz 的压缩文件。

  1. 解压文件:
1
2
3
gzip -d my_document.txt.gz
# 或者
gunzip my_document.txt.gz

这会将 my_document.txt.gz 解压回 my_document.txt

场景 2:使用 targzip 归档和压缩目录

  1. 创建归档并压缩:
1
tar -czvf my_directory.tar.gz my_directory
  • -c: 创建归档文件。
  • -z: 使用 gzip 压缩。
  • -v: 显示详细信息。
  • -f: 指定归档文件名。

这将创建一个名为 my_directory.tar.gz 的归档文件,其中包含 my_directory 目录的内容。

  1. 解压归档文件:
1
tar -xzvf my_directory.tar.gz
  • -x: 解开归档文件。
  • -z: 使用 gzip 解压。
  • -v: 显示详细信息。
  • -f: 指定归档文件名。

这会将 my_directory.tar.gz 解压到当前目录。

场景 3:使用 tarbzip2 归档和压缩目录

  1. 创建归档并压缩:
1
tar -cjvf my_directory.tar.bz2 my_directory
  • -c: 创建归档文件。
  • -j: 使用 bzip2 压缩。
  • -v: 显示详细信息。
  • -f: 指定归档文件名。

这将创建一个名为 my_directory.tar.bz2 的归档文件,其中包含 my_directory 目录的内容。

  1. 解压归档文件:
1
tar -xjvf my_directory.tar.bz2
  • -x: 解开归档文件。
  • -j: 使用 bzip2 解压。
  • -v: 显示详细信息。
  • -f: 指定归档文件名。

这会将 my_directory.tar.bz2 解压到当前目录。

场景 4:使用 tarxz 归档和压缩目录

  1. 创建归档并压缩:
1
tar -cJvf my_directory.tar.xz my_directory
  • -c: 创建归档文件。
  • -J: 使用 xz 压缩。
  • -v: 显示详细信息。
  • -f: 指定归档文件名。

这将创建一个名为 my_directory.tar.xz 的归档文件,其中包含 my_directory 目录的内容。

  1. 解压归档文件:
1
tar -xJvf my_directory.tar.xz
  • -x: 解开归档文件。
  • -J: 使用 xz 解压。
  • -v: 显示详细信息。
  • -f: 指定归档文件名。

这会将 my_directory.tar.xz 解压到当前目录。

场景 5:使用 zip 压缩文件和目录

  1. 压缩文件:
1
zip my_archive.zip my_file.txt
  1. 压缩目录(递归):
1
zip -r my_archive.zip my_directory
  1. 解压文件:
1
unzip my_archive.zip

预期输出示例

在成功压缩或解压后,终端通常会显示操作的详细信息,例如压缩比率,已处理的文件等。如果没有错误,则不会有任何错误提示。

Metadata

  • Tags: Linux, 压缩, 解压, gzip, tar, bzip2, xz, zip, 文件管理, 归档, Compression, Decompression
  • Categories: 系统管理, 文件操作

文章作者: 达朵
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 达朵 !
  目录