假设在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中的思想也是一样的。
tar使用格式 tar [参数] 打包文件名 文件
tar命令很特殊,其参数前面可以使用“-”,也可以不使用。
参数 | 含义 |
---|---|
-c | 生成档案文件,创建打包文件 |
-v | 列出归档解档的详细过程,显示进度 |
-f | 指定档案文件名称,f后面一定是.tar文件,所以必须放选项最后 |
-t | 列出档案中包含的文件 |
-x | 解开档案文件 |
好了,介绍完 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与gzip命令结合使用实现文件打包、压缩。 tar只负责打包文件,但不压缩,用gzip压缩tar打包后的文件,其扩展名一般用xxxx.tar.gz。
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 公共的 视频 文档 音乐
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
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 公共的 视频 文档 音乐
好的,我们来看看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