Linux 压缩、解压命令

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

在 Linux 系统中, 用户可以使用多种压缩与解压缩工具, 如 targzipbzip2compressziprar 及其对应的解压程序 gunzipbunzip2uncompressunzipunrar。通过它们可以对不同格式的压缩文件进行操作, 如 .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 可以在打包或解包的同时调用其它的压缩程序, 如 compressgzipbzip2xz 等。

compress, gzip, bzip2, xztar 的组合适用于 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 这些工具可以同时进行打包和压缩, 将多个文件压缩到一个文件中, 因此生成的文件只需一个步骤即可完成归档和压缩。

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

zip

Linux 中 zipunzip 程序分别用于压缩和解压 .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

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

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

# 解压 all.rar
unrar e all.rar

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

压缩文件格式 解压命令
.Z uncompress file.Z
.gz gzip -d file.gzgunzip file.gz
.bz2 bzip2 -d file.bz2bunzip2 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.gztar -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
使用 Hugo 构建
主题 StackJimmy 设计
时间过了 2.5 年