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

引子:

假设在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的大。
好啦,这期博客就到这里,谢谢大家。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值