Linux命令小白笔记第六弹 归档管理tar,文件的压缩解压gzip、bzip2

Nona ·
更新时间:2024-11-14
· 570 次阅读

引子:

假设在Linux中你要传很多同类型的文件给你的小伙伴,就比如下面这样:

sujznn@virtual-machine:~$ ls 公共的 模板 视频 图片 文档 下载 音乐 桌面 sujznn@virtual-machine:~$ touch 12.txt sujznn@virtual-machine:~$ touch 13.txt sujznn@virtual-machine:~$ touch 14.txt

你想把你创建的所有txt文件全都传给别人,那我们难道要一个一个文件传吗?
在Windows中,我们会把文件全都打包起来,然后再传给别人。那在Linux中的思想也是一样的。

1.归档管理 :tar (只是打包,并不会压缩) 计算机中的数据经常需要备份,tar是Unix/Linux中最常用的备份工具,此命令可以把一系列文件归档到一个大文件中,也可以把档案文件解开以恢复数据。

tar使用格式 tar [参数] 打包文件名 文件

tar命令很特殊,其参数前面可以使用“-”,也可以不使用。

参数 含义
-c 生成档案文件,创建打包文件
-v 列出归档解档的详细过程,显示进度
-f 指定档案文件名称,f后面一定是.tar文件,所以必须放选项最后
-t 列出档案中包含的文件
-x 解开档案文件
注意:除了f需要放在参数的最后,其它参数的顺序任意。

好了,介绍完 tar 的用法我们回到开头那个例子,现在我们知道用tar进行打包了。那我们来看看怎么打包:

sujznn@virtual-machine:~$ ls 12.txt 14.txt text.tar 模板 图片 下载 桌面 13.txt text 公共的 视频 文档 音乐 sujznn@virtual-machine:~$ rm -rf text text.tar sujznn@virtual-machine:~$ ls 12.txt 13.txt 14.txt 公共的 模板 视频 图片 文档 下载 音乐 桌面 sujznn@virtual-machine:~$ tar -cvf text.tar *.txt 12.txt 13.txt 14.txt sujznn@virtual-machine:~$ ls 12.txt 14.txt 公共的 视频 文档 音乐 13.txt text.tar 模板 图片 下载 桌面 sujznn@virtual-machine:~$

我们可以看到 text.tar 里已经有了我们想要的文件了。

如果我们想把刚刚的那个文件包给解开呢 ?在上面的选项介绍中我们已经介绍了解包的选项,那我们来实际操作一下: sujznn@virtual-machine:~$ ls 12.txt 14.txt 公共的 视频 文档 音乐 13.txt text.tar 模板 图片 下载 桌面 sujznn@virtual-machine:~$ mkdir text1 sujznn@virtual-machine:~$ ls 12.txt 14.txt text.tar 模板 图片 下载 桌面 13.txt text1 公共的 视频 文档 音乐

为了方便看实验结果,我先建立了一个空文件夹 text1 ,然后我们把text.tar放入 text1

sujznn@virtual-machine:~$ mv text.tar text1 sujznn@virtual-machine:~$ ls 12.txt 13.txt 14.txt text1 公共的 模板 视频 图片 文档 下载 音乐 桌面 sujznn@virtual-machine:~$ cd text1/ sujznn@virtual-machine:~/text1$ ls text.tar

这时候,text1 里除了text.tar之外什么都没有,好的,我们现在开始解text.tar 这个文件包。

sujznn@virtual-machine:~/text1$ tar -xvf text.tar 12.txt 13.txt 14.txt sujznn@virtual-machine:~/text1$ ls 12.txt 13.txt 14.txt text.tar sujznn@virtual-machine:~/text1$

这时候,我们的 text1 里就有了text.tar 包里的文件。(解压文件默认是解压到当前文件夹里的。)
其实我们可以发现,解包完之后,原来的包还在。就像Windows中的压缩包,我们解压成文件后,压缩包还在,这个压缩包存在与否,是取决与我们自己的意愿,我们可以选择保留,也可以选择把它删除。

但值得注意的是这里的tar只是打包,并没有压缩。接下来我们来看看怎么压缩。 2.压缩解压 (常用的2种方式) 2.1 文件压缩解压:gzip

tar与gzip命令结合使用实现文件打包、压缩。 tar只负责打包文件,但不压缩,用gzip压缩tar打包后的文件,其扩展名一般用xxxx.tar.gz。

gzip使用格式:gzip [选项] 被压缩文件 (上面的介绍也许有点抽象,接下来额用实际例子告诉大家如何压缩解压): sujznn@virtual-machine:~$ ls 12.txt 13.txt 14.txt text1 公共的 模板 视频 图片 文档 下载 音乐 桌面 sujznn@virtual-machine:~$ tar -zcvf text2.tar.gz *.txt 12.txt 13.txt 14.txt sujznn@virtual-machine:~$ ls 12.txt 14.txt text2.tar.gz 模板 图片 下载 桌面 13.txt text1 公共的 视频 文档 音乐 我们来品一品这个命令:tar -zcvf text2.tar.gz *.txt 。你品,你细细品, 这是我们刚刚打包文件的命令:tar -cvf text1.tar *.txt 怎么样,品出规律没有?以后我们打包压缩文件,只要在 我们打包文件名后加上.gz,在选项前加个z 就实现了打包压缩。简单吧,我们来看看打包后的文件和未打包的文件大小。 sujznn@virtual-machine:~$ mv text2.tar.gz text1 sujznn@virtual-machine:~$ ls 12.txt 13.txt 14.txt text1 公共的 模板 视频 图片 文档 下载 音乐 桌面 sujznn@virtual-machine:~$ cd text1/ sujznn@virtual-machine:~/text1$ ls 12.txt 13.txt 14.txt text2.tar.gz text.tar sujznn@virtual-machine:~/text1$ ls -l 总用量 16 -rw-rw-r-- 1 sujznn sujznn 0 2月 27 19:59 12.txt -rw-rw-r-- 1 sujznn sujznn 0 2月 27 19:59 13.txt -rw-rw-r-- 1 sujznn sujznn 0 2月 27 19:59 14.txt -rw-rw-r-- 1 sujznn sujznn 129 2月 27 21:10 text2.tar.gz -rw-rw-r-- 1 sujznn sujznn 10240 2月 27 20:01 text.tar

这里呢,博主还是和上面一样,先把这个压缩包给放入text1 文件夹里,这样好观察嘛。我们可以看到,压缩包果然省了不少空间噢!!!在这里插入图片描述

那我们来看看解压如何解压: sujznn@virtual-machine:~/text1$ ls text2.tar.gz text.tar sujznn@virtual-machine:~/text1$ tar -zxvf text2.tar.gz 12.txt 13.txt 14.txt sujznn@virtual-machine:~/text1$ ls 12.txt 13.txt 14.txt text2.tar.gz text.tar 我们继续来品一品这个解压包的命令:tar -zxvf text2.tar.gz 这是我们开头打包文件的命令:tar -xvf text.tar *.txt 好的,我们发现了 只要在解压包的选项前加一个Z,就可以解压包了。 2.2 文件压缩解压 bzip2 其实bzip2的使用方法和gzip差不多,我们接下来直接用例子来看看: sujznn@virtual-machine:~/text1$ ls 12.txt 13.txt 14.txt text2.tar.gz text.tar sujznn@virtual-machine:~/text1$ ^C sujznn@virtual-machine:~/text1$ cd .. sujznn@virtual-machine:~$ ls 12.txt 13.txt 14.txt text1 公共的 模板 视频 图片 文档 下载 音乐 桌面 sujznn@virtual-machine:~$ tar -jcvf text3.tar.bz2 *.txt 12.txt 13.txt 14.txt sujznn@virtual-machine:~$ ls 12.txt 14.txt text3.tar.bz2 模板 图片 下载 桌面 13.txt text1 公共的 视频 文档 音乐 我们来看看命令:tar -jcvf text3.tar.bz2 *.txt 就是在打包命令的选项前加j 文件名的后面再加 .bz2 就完成啦。 那我们看看解压包的命令:tar -jxvf text3.tar.bz2

好的,我们来看看gzip和bzip2压缩的文件 再大小上有什么区别:

sujznn@virtual-machine:~/text1$ ls 12.txt 13.txt 14.txt text2.tar.gz text3.tar.bz2 text.tar sujznn@virtual-machine:~/text1$ ls -l 总用量 20 -rw-rw-r-- 1 sujznn sujznn 0 2月 27 19:59 12.txt -rw-rw-r-- 1 sujznn sujznn 0 2月 27 19:59 13.txt -rw-rw-r-- 1 sujznn sujznn 0 2月 27 19:59 14.txt -rw-rw-r-- 1 sujznn sujznn 129 2月 27 21:10 text2.tar.gz -rw-rw-r-- 1 sujznn sujznn 147 2月 27 21:47 text3.tar.bz2 -rw-rw-r-- 1 sujznn sujznn 10240 2月 27 20:01 text.tar

在这里插入图片描述
我们会发现,bzip2的大小会比gzip的大。
好啦,这期博客就到这里,谢谢大家。


作者:机智牛牛小嗨嗨



压缩 linux命令 Linux bzip2 gzip tar

需要 登录 后方可回复, 如果你还没有账号请 注册新账号