Linux下的压缩包管理:tar 命令速记

2022/12/14 4:24:00

本文主要是介绍Linux下的压缩包管理:tar 命令速记,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

学习tar命令之前,我们应该先了解一个概念叫做归档(archiving):归档是将多个文件或目录打包成一个文件,以便于备份,日后还原,和文件传输操作。tar应该就是磁带的英文tape和归档的英文前面的ar简写组合而来。

tar命令就是Linux系统下标准的归档/打包工具。和Windows下的压缩软件略有不同的是:tar命令默认并不压缩文件,所以用tar打包后的文件文件可能不会变小。不过tar命令内部支持gzip、gunzip和bizip2几种压缩解压方式。

要正确地使用tar命令我们需要熟悉tar命令的几个选项:

主要选项
c 选项表示create,创建新的tar文件
x 选项表示extract,从tar包中抽取文件(解包)
z 选项表示zip,使用gzip、gunzip方式压缩或解压(一般针对.tar.gz和.tgz文件)
f 选项表示file,后接tar文件的路径,来指定创建或者解包的对象

辅助选项
t 选项表示list,列出文件中的内容
v 选项表示verbose,显示打包文件的详细信息
j 表示使用bzip2方式来压缩或解压文件(一般针对.bz2文件)

PS:tar命令在使用选项时也和其它Linux命令略有不同,不需要在选项前加上一个-,不过加上也可以
示例一:打包
打包当前目录下的文件为archive.tar
tar cvf archive.tar .
./
./149791020-VM-backup/
./ITdafei.txt
./log-analyzer.sh
./unzip.sh

这里archive.tar是我们f选项的指定对象,即我们要创建的tar包文件名。  . 表示打包对象是当前目录下的所有文件。.tar后缀是为了我们方便日后理解文件类型而添加的。

打包之后我们可以先用 ls -l archive.tar 来查看这个新创建的文件:
-rwxrwxrwx 1 itdafei itdafei 3665920 Dec 11 09:56 archive.tar

以后要查看 archive.tar 中的详细文件列表,可以:
tar tvf archive.tar
drwxrwxrwx itdafei/itdafei       0 2022-12-11 09:56 ./
drwxrwxrwx itdafei/itdafei       0 2022-12-10 19:38 ./149791020-VM-backup/
drwxrwxrwx itdafei/itdafei       0 2022-12-10 19:39 ./149791020-VM-backup/archive_08_25_2022_04_21_25/
...
-rwxrwxrwx itdafei/itdafei      33 2022-12-11 08:38 ./ITdafei.txt
-rwxrwxrwx itdafei/itdafei    1023 2022-10-29 10:48 ./log-analyzer.sh
-rwxrwxrwx itdafei/itdafei    1818 2022-12-11 08:38 ./unzip.sh
示例二:解包
打包时我们使用了c选项来创建新的归档文件,解包时我们将c选项换成x选项即可, 后接的解包对象 archive.tar 是一个已存在的tar包文件:
tar xvf archive.tar
drwxrwxrwx itdafei/itdafei       0 2022-12-11 09:56 ./
drwxrwxrwx itdafei/itdafei       0 2022-12-10 19:38 ./149791020-VM-backup/
drwxrwxrwx itdafei/itdafei       0 2022-12-10 19:39 ./149791020-VM-backup/archive_08_25_2022_04_21_25/
...

ls -l
total 3588
drwxrwxrwx 1 itdafei itdafei     512 Dec 10 19:38 149791020-VM-backup
-rwxrwxrwx 1 itdafei itdafei      33 Dec 11 08:38 ITdafei.txt
-rwxrwxrwx 1 itdafei itdafei 3665920 Dec 11 09:56 archive.tar
drwxrwxrwx 1 itdafei itdafei     512 Dec 11 08:38 archive_08_08_2022_15_47_28
-rwxrwxrwx 1 itdafei itdafei    1023 Oct 29 10:48 log-analyzer.sh
-rwxrwxrwx 1 itdafei itdafei    1818 Dec 11 08:38 unzip.sh

日常使用中,如果仅仅是打包往往无法满足需求。因为存储和传输都需要耗费资源。我们更多情况下还是会在打包同时进行压缩。一般做法是在打包命令的基础上再添加一个z选项,以gzip方式压缩。或者可以选择j选项,以bzip2方式压缩。

示例三:打包时以gzip方式压缩
tar czvf archive.tar.gz .

这里的.tar.gz后缀也是我们使用gzip方式压缩tar包的文件一般写法,方便日后辨认。常见写法还可能有:archive.tgz

ls查看新创建的压缩包,可以看到它的大小不到原来的30% (视文件类型不同而有所差异):
ls -l archive.tar.gz
-rwxrwxrwx 1 itdafei itdafei 1055847 Dec 11 10:24 archive.tar.gz

日后要解该类型的压缩包也很简单,将c选项换成x选项,z选项保留:
tar xzvf archive.tar.gz

注意:目录下如果存在和压缩包内同名的文件,解包后将会被直接替换掉。

对比我们在Windows下的解包命令,上面的tar命令会直接将解包后的内容放在同级目录下。很多时候我们可能更希望指定一个目录来解包。对此,tar命令有个 -C 选项,表示change,更改解包后的目标路径:
tar xzvf archive.tar.gz -C /tmp/archive

bzip2是一种更新的压缩方式。以bzip2方式压缩有可能达到更高的压缩率,不过速度也可能偏慢。
如果要使用bzip2方式压缩解压。我们须将z选项换成j选项,文件名后缀也相应地改成.tar.bz2。

示例四:bzip2方式
bzip2方式压缩打包:
tar cjvf archive.tar.bz2
./
./149791020-VM-backup/
./149791020-VM-backup/archive_08_25_2022_04_21_25/
...
./ITdafei.txt
./log-analyzer.sh
./unzip.sh

查看:
ls -l archive.tar.bz2
-rwxrwxrwx 1 itdafei itdafei 957572 Dec 11 10:43 archive.tar.bz2

解包:
tar xjvf archive.tar.bz2

上述命令和选项,如果有英文基础的话,通过英文字母的含义可能更容易记住。所以学习Linux会英文是一个优势。通过已知的概念来类比记忆新的知识是非常科学和高效的。如果没有,可能就要通过多次练习,学习后在过一些时间再次回顾和复用的方式了。



这篇关于Linux下的压缩包管理:tar 命令速记的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程