Linux 压缩、解压命令

.tar.Z、.tar.gz、.tgz、.tar.bz2、.tar.xz、zip、.7z、.rar

在 Linux 系统中, 用户可以使用多种压缩与解压缩工具, 如 tar、gzip、bzip2、compress、zip、rar 及其对应的解压程序 gunzip、bunzip2、uncompress、unzip、unrar。通过它们可以对不同格式的压缩文件进行操作, 如 .tar、.gz、.tar.gz、.tgz、.bz2、.tar.bz2、.Z、.tar.Z、.zip、.rar 等。下面将逐一介绍这些程序的基本用法及常用命令, 以后应该不需要为下载了一个软件而不知道如何在 Linux 下解开而烦恼了。

tar 命令

tar 是 Linux 中最常用的打包程序, 通常用于将多个文件打包成一个 .tar 文件, 便于管理和分发

tar 使用破折号传递参数 (例如: tar -cf 而不是 tar cf), 则 -f 选项必须放在最后, 因为它指定文件名

tar 命令的基本用法如下

# 将所有 .jpg 文件打包为 all.tar
# -c  创建新包
# -f  指定包文件名
tar -cf all.tar *.jpg

# 将所有 .gif 文件添加到 all.tar 中
# -r  向已有的 tar 包中添加文件
tar -rf all.tar *.gif

# 更新 all.tar 中的 logo.gif 文件
# -u  更新文件
tar -uf all.tar logo.gif

# 列出 all.tar 中的所有文件
# -t  列出 tar 包中的文件
tar -tf all.tar

# 解压 all.tar
# -x  解压文件
tar -xf all.tar

tar 调用压缩程序 (组合使用)

tar 可以在打包或解包的同时调用其它的压缩程序, 如 compress、gzip、bzip2、xz 等。

compress, gzip, bzip2, xz 与 tar 的组合适用于 Linux 系统打包压缩工作, 适合高效存储。

tar 格式: Linux/Unix 系统常用 .tar.Z 、.tar.gz、.tar.bz2、.tar.xz 格式, 解压时通常需要先使用对应的压缩工具解压, 再使用 tar 提取归档。

下面分别介绍如何调用这些压缩程序

tar 调用 compress

compress 是早期 Unix 系统中使用的一种压缩工具, 采用 LZW 算法 (Lempel-Ziv-Welch)。

.Z 文件是使用 compress 压缩的文件, 解压程序是 uncompress。

tar 中使用 -Z 参数调用 compress

# 将所有 .jpg 文件打包为 all.tar, 并用 compress 压缩生成 all.tar.Z
tar -cZf all.tar.Z *.jpg

# 解压 all.tar.Z
tar -xZf all.tar.Z

tar 调用 gzip

gzip (GNU zip) 是由 Jean-loup Gailly 和 Mark Adler 开发的, 基于 DEFLATE 算法。广泛用于 Linux 和 Unix 系统。

.gz, .tgz 文件是使用 gzip 压缩的文件, 解压程序是 gunzip。

tar 中使用 -z 参数调用 gzip

# 将所有 .jpg 文件打包为 all.tar, 并用 gzip 压缩生成 all.tar.gz
tar -czf all.tar.gz *.jpg

# 解压 all.tar.gz
tar -xzf all.tar.gz

tar 调用 bzip2

bzip2 是使用 Burrows-Wheeler (BWT+RLE+Huffman) 变换算法的压缩工具, 专为压缩率优化而设计。

.bz2 文件是使用 bzip2 压缩的文件, 解压程序是 bunzip2。

tar 中使用 -j 参数调用 bzip2

# 将所有 .jpg 文件打包为 all.tar, 并用 bzip2 压缩生成 all.tar.bz2
tar -cjf all.tar.bz2 *.jpg

# 解压 all.tar.bz2
tar -xjf all.tar.bz2

tar 调用 xz

xz 是一种基于 LZMA2 算法的压缩工具, 提供更高的压缩比和更高的压缩效率。

.xz 文件是使用 xz 压缩的文件, 解压程序是 unxz。

tar 中使用 -J 参数调用 xz

# 将所有 .jpg 文件打包为 all.tar, 并用 xz 压缩生成 all.tar.xz
tar -cJf all.tar.xz *.jpg

# 解压 all.tar.xz
tar -xJf all.tar.xz

一体化压缩工具

在 Windows 中常见的压缩格式, zip, 7z, rar 这些工具可以同时进行打包和压缩, 将多个文件压缩到一个文件中, 因此生成的文件只需一个步骤即可完成归档和压缩。

zip、7z 和 rar 通常只生成 .zip、.7z、.rar 文件, 跨平台兼容性较好。

zip

Linux 中 zip 和 unzip 程序分别用于压缩和解压 .zip 格式的文件

# 将所有 .jpg 文件压缩成 all.zip
zip all.zip *.jpg

# 解压 all.zip
unzip all.zip

7z

Linux 中处理 .7z 文件需要安装 7-Zip for Linux: console version, 下载地址: 7-Zip for Linux

# 下载并解压
wget https://www.7-zip.org/a/7z2408-linux-x64.tar.xz
mkdir 7z
tar -xJpf 7z2107-linux-x64.tar.xz -C 7z
cp 7z/7zzs /usr/local/bin/7z

安装完成后, 可以使用 7z 命令。

# 将所有 .jpg 文件压缩成 all.7z
7z a all.7z *.jpg

# 解压 all.7z
7z e all.7z

rar

Linux 中处理 .rar 文件需要安装 RAR for Linux (Command line only), 下载地址: WinRAR and RAR archiver downloads

# 下载并解压
tar -xzpvf rarlinux-3.2.0.tar.gz
cd rar

# 安装
make

安装完成后, 可以使用 rar 和 unrar 命令。

# 将所有 .jpg 文件压缩成 all.rar
rar a all.rar *.jpg

# 解压 all.rar
unrar e all.rar

常见压缩文件的解压命令总结

压缩文件格式 解压命令
.Z uncompress file.Z
.gz gzip -d file.gz 或 gunzip file.gz
.bz2 bzip2 -d file.bz2 或 bunzip2 file.bz2
.xz xz -d file.gz
.tar tar -xf file.tar
.tar.Z tar -xZf file.tar.Z
.tar.gz 或 .tgz tar -xzf file.tar.gz 或 tar -xzf file.tgz
.tar.bz2 tar -xjf file.tar.bz2
.tar.xz tar -xJf file.tar.xz
.zip unzip file.zip
.7z 7z e all.7z
.rar unrar e file.rar

综合比较

特性 compress gzip bzip2 xz 7z rar
压缩算法 LZW DEFLATE BWT+RLE+Huffman LZMA2 LZMA2 RAR
文件格式支持 .Z .gz .bz2 .xz .7z .rar
压缩比 较低 中等 高 非常高 非常高 高
压缩速度 快 很快 较慢 慢 较慢 慢
解压速度 快 很快 较慢 慢 快 较快
资源使用 低 低 中等 高 高 较高
大文件支持 否 是 是 是 是 是
多线程支持 否 否 否 是 是 否

例子

将整个 /home/www/images 目录下的文件全部打包为 /home/www/images.tar

在参数 f 后面的压缩文件名是自己取的, 习惯上用 .tar, 如果加 z 参数, 则以 .tar.gz 或 .tgz 来代表 gzip 压缩过的 tar 文件

# 仅打包, 不压缩
tar -cvf /home/www/images.tar /home/www/images

# 打包后, 以 gzip 压缩
tar -zcvf /home/www/images.tar.gz /home/www/images

将 .tgz 文件解压到指定目录

tar -zxvf test.tgz -C 指定目录

# 比如将 /source/kernel.tgz 解压到 /source/linux-2.6.29 目录
tar -zxvf /source/kernel.tgz -C /source/linux-2.6.29

原文

Create a tar.xz in one command
Linux File Compression: gzip, bzip2, and xz Unveiled
Linux解压文件到指定目录

最后更新于 2024-10-27