Linux tar 命令完整指南 - 从归档原理到压缩与解压实战示例

概述

了解在 Linux 环境中打包和压缩大文件与目录时最常用的 tar 命令的工作原理。通过理解归档与压缩的本质区别,并通过实际的终端实践掌握常用选项的使用方法。

tar 的基本概念:单纯打包(Archive)与压缩(Compression)的区别

为了进行 tar 归档实战,创建练习目录和示例文本文件。

mkdir -p ~/tar-demo/sample && echo ‘Hello Linux 1’ > ~/tar-demo/sample/file1.txt && echo ‘Hello Linux 2’ > ~/tar-demo/sample/file2.txt

tar 命令用于将多个文件和目录打包成一个归档文件,或者从中解包。
结合使用 -c、-v、-f 选项和 -C 选项,将 sample 目录打包生成 archive.tar 文件。
⚙️ [主要选项]

-c : 创建新的归档文件。
-x : 解压或提取归档文件的内容。
-t : 查看归档文件内包含的文件列表。
-v : 在屏幕上详细显示归档创建或解压的过程。
-f : 指定要操作的归档文件名。
-z : 使用 gzip 算法进行压缩或解压(.tar.gz)。
-j : 使用 bzip2 算法进行压缩或解压(.tar.bz2)。
-J : 使用 xz 算法进行压缩或解压(.tar.xz)。
-C : 指定执行归档操作的目标目录路径。

tar -cvf ~/tar-demo/archive.tar -C ~/tar-demo sample

使用 ls -lh 命令查看生成的 archive.tar 文件与源目录的详细信息。
由于这只是单纯将文件打包为一个归档文件,因此并未经历减小体积的压缩过程。

ls -lh ~/tar-demo

实战压缩选项:结合使用 gzip(-z) 与 bzip2(-j)

添加 gzip 压缩选项 -z,在创建归档的同时压缩 sample 目录,生成 .tar.gz 文件。
该方式压缩速度快且压缩率良好,是实际工作中最常用的方式。

tar -czvf ~/tar-demo/archive.tar.gz -C ~/tar-demo sample

指定 bzip2 压缩选项 -j,在打包 sample 目录的同时进行压缩,生成 .tar.bz2 归档文件。
与 gzip 相比,压缩过程耗时较长,但通常具有更高的压缩率。

tar -cjvf ~/tar-demo/archive.tar.bz2 -C ~/tar-demo sample

运行 ls -lh ~/tar-demo/*.tar* 命令查看生成的归档文件列表和文件大小。
与未压缩的普通归档文件(archive.tar)相比,可以直观地确认应用了压缩算法的文件大小差异。

ls -lh ~/tar-demo/.tar

预览归档内部文件列表(-t)与安全验证

在解压之前,为了预先确认归档内部的文件组成和目录路径,运行 tar -tvf ~/tar-demo/archive.tar.gz 命令。
将 -t 选项与详细信息输出选项 -v 结合使用,无需实际解压即可安全地预先验证所包含文件的权限、所有者、大小以及目录结构。

tar -tvf ~/tar-demo/archive.tar.gz

安全解压到指定路径(-x 与 -C)

运行 mkdir -p ~/tar-demo/extracted 命令,创建专门用于安全解压的目录。

mkdir -p ~/tar-demo/extracted

使用 -x 和 -C 选项,在不污染当前工作目录的情况下,将归档文件解压到指定的目标路径。
使用 -z 选项解压 gzip 压缩,并使用 -v 选项实时查看正在解压的文件列表。

tar -xzvf ~/tar-demo/archive.tar.gz -C ~/tar-demo/extracted

为了确认归档内的文件是否已成功解压到指定路径,运行 ls -la ~/tar-demo/extracted/sample 命令。
从输出结果中可以确认,文件的所有权和权限已完全恢复为创建归档时的状态。

ls -la ~/tar-demo/extracted/sample

以上简要整理了 Linux tar 命令的基本工作原理以及实际工作中常用的压缩与解压示例。
希望大家能根据实际情况灵活运用这些核心选项,更轻松高效地在 Linux 环境中完成文件管理与备份工作。