主页 实验环境 学习Linux - Study Area CN

tar 打包软件

在使用Linux的过程中,你可能会看见各种各样的压缩包文件,比如tar.gz(最常见的 tar 压缩包格式)、tar.bz2tar.xztar等等。这些文件都可以使用tar命令打包。

在linux上也有些常见的图形化压缩包管理器,比如 Ark,但是它们远不及命令行工具的快速和稳定性。

tar压缩包都有一个显著的特征,文件名中都带有一个 .tar(tgz 等部分格式除外),但是后面的 .gz 等等又是什么呢?其实,tar 本身并不是一个压缩格式,它只是简单的把所有文件和文件夹打包到一起,而后面的 .gz.bz2.xz 等等才是压缩的格式。

关于其它格式的压缩包,比如ziprar等,可以使用其它命令,比如unzipunrar等。

绝大部分的linux发行版都预置了这个命令,你通常无需额外安装,直接使用便可。

tar 命令

tar命令用于打包文件和目录,可以将多个文件和目录打包成一个文件,也可以将一个打包文件解压成多个文件和目录。

tar命令的基本语法如下:

tar [选项] [文件或目录]

下面是常见的选项:

  • -c:创建新的压缩文件。
  • -x:解压文件。
  • -t:列出压缩文件中的所有文件。
  • -z:使用gzip压缩或解压 (.tar.gz 格式)。
  • -j:使用bzip2压缩或解压 (.tar.bz2 格式)。
  • -v:显示操作的详细信息。
  • -f:指定压缩包的文件名。
  • -C:指定解压目录。

上面的内容看不懂也没关系,下面会一一介绍用法。

常见用法

打包文件为 .tar.gz

tar -zcvf archive.tar.gz file_or_dir1 [file_or_dir2 ...]

上面的命令会将 file_or_dir1file_or_dir2 等文件或者目录打包成一个名为 archive.tar.gz 的压缩包。

在 tar 中,是可以把多个 - 选项连用的,例如 -z-c 可以写成 -zc(顺序无所谓),但是需要保证像 -f 这样带有参数的选项放在最后。除了 tar 命令,很多linux的基本命令都可以这么用,包括我们之前学习的 cp, ls 等命令。

解压 .tar.gz 文件

tar -zxvf archive.tar.gz

上面的命令会将 archive.tar.gz 压缩包解压到当前目录。

这两个用法应该和是我们平时见得最多的用法了。熟练掌握这几个用法,你就可以安装绝大部分的压缩包形式的linux软件了。

完整用法

接下来,我们来一起看看 tar 都有什么魔力吧。

下面会有一个常见的参数 -v,表示显示操作的详细信息。它会列出操作的所有文件。如果不加上这个参数,我们就看不到任何输出。当然,你也可以省略。

首先,我们进行压缩包操作,都要有个压缩包吧,所以下面的所有命令,都要加入 -f 你的压缩包名字 这个选项指定操作的压缩包文件。

压缩格式

我们前面提到了,tar只是个打包的格式,并不能压缩。但是,tar可以调用其它的压缩工具,比如gzip、bzip2、xz等,来对打包的文件进行压缩。

下面是一些常用的参数:

  • -z:使用gzip压缩或解压 (.tar.gz 格式)。
  • -j:使用bzip2压缩或解压 (.tar.bz2 格式)。
  • -J:使用xz压缩或解压 (.tar.xz 格式)。

若列出文件,可以省略压缩格式,后面会讲到。

创建压缩包

要创建压缩包,我们可以使用 -c 选项。

例如上文的

tar -zcvf archive.tar.gz file_or_dir1 [file_or_dir2 ...]

就是创建一个名为 archive.tar.gz 的压缩包,使用 gzip 压缩格式。

列出压缩包中的文件

有了压缩包,我们该怎么验证,或者别人发来了一个压缩文件,我们怎么查看里面的内容呢?

我们可以使用 -t 选项。

tar -ztvf archive.tar.gz

上面的命令会列出 archive.tar.gz 压缩包中的所有文件。

解压压缩包

解压压缩包,我们可以使用 -x 选项。

例如上文的

tar -zxvf archive.tar.gz

上面的命令会将 archive.tar.gz 压缩包解压到当前目录。

值得注意的是,这个操作不会新建一个文件夹。所以在解压之前,建议先看一看压缩包内是否有一层文件夹。尤其是当前目录文件比较多时,容易把文件解压到错误的位置。

指定解压目录

如果我们需要改变解压的位置,我们可以使用 -C 选项,例如解压到新建的文件夹。

例如上文的

tar -zxvf archive.tar.gz -C ./archive

上面的命令会将 archive.tar.gz 压缩包解压到当前目录下的 archive 文件夹中。

添加文件

如果我们需要向压缩包中添加文件,我们可以使用 -r 选项。

例如上文的

tar -rvf archive.tar.gz file_or_dir1 [file_or_dir2 ...]

上面的命令会将 file_or_dir1file_or_dir2 等文件或者目录添加到 archive.tar.gz 压缩包中。

删除文件

如果我们需要从压缩包中删除文件,我们可以使用 --delete 选项。

tar -vf archive.tar.gz --delete file_or_dir

上面的命令会从 archive.tar.gz 压缩包中删除 file_or_dir

更新文件

如果我们需要更新压缩包中的文件,我们可以使用 -u 选项。这个选项类似于 -r,只不过是替换。

tar -uf archive.tar.gz file_or_dir1 [file_or_dir2 ...]

tar 的用法很多,但是常见的用法也就那么几种。多看,多用,你很快就能掌握。

课后作业

tar 是一个非常强大的工具。这个命令使用十分复杂,这里也难以介绍完全。下面的课后作业可以让你基本理解这个命令:

  1. 使用前文提到的 nano 新建两三个个文件,文件名和内容都随意。

  2. 使用 tar 命令以 gzip 格式压缩到一个压缩文件。

  3. 把这个文件发给小伙伴,当然也可以发到论坛里。

  4. 使用 tar 命令查看并且解压这个压缩包里的文件

  5. 使用 cat 命令,看看文件里写的是什么


study-area-cn