第十七章:第24节Linux目录与文件——文件打包压缩tar命令

更新于:2018-12-16 16:01:40

在Windows上,我们经常会把某一些文件压缩成一个包


1.png


目的便于好管理,更方便传输。


我们用winscp往服务器传文件时,你就会发现,如果你传输的是一个文件夹,文件夹里有上千上万的文件和子目录,传输过程会非常慢。它需要一个一个传,传输过程中还容易中断,造成部分文件传输不完整。


如果先把整个文件夹压缩成一个压缩包,再上传,再解压,那速度要快很多,还不容易出现部分文件不完整的问题。


在Windows上压缩文件,一般都是使用各种压缩软件,


1.png


操作起来非常方便。在Linux中,我们怎么去压缩文件呢?Windows中的压缩包与Linux中的压缩包是否可以相互解压。


那这节我们就学习Linux下文件压缩打包的相关命令。第一个tar命令:


tar-归档管理


计算机中的数据经常需要备份,tar是Unix/Linux中最常用的备份工具,此命令可以把一系列文件归档到一个大文件中,也可以把档案文件解开以恢复数据。


tar  [参数]  打包后文件名(.tar)  文件或文件夹


参数:

c -> create,创建新的档案文件。如果用户想备份一个目录或是一些文件,就要选择这个选项。

x -> 从压缩文件中释放文件。
c命令与x命令互斥,tar命令要么归档要么解档。二选其一。

f -> 指定压缩文件的名字,这个选项属于必选的。

v -> 列出归档解档的详细过程


1)打包一个文件


演示:

1.png

tar -cf a.sh.tar a.sh

a.sh归档到a.sh.tar压缩文件里,后缀为.tar,便于识别这是tar文档包。


a.sh.tar压缩文件创建成功


③创建tar目录,并移动a.sh.tar文件进tar目录


④把a.sh.tar压缩文件释放(解档)


注意:

大家有没有注意到打包后的文件a.sh.tara.sh大很多,这感觉没有做压缩。对,上面的命令我们只是做了一个打包,并没有压缩文件。想要压缩文件,还需要参数:


z -> 用gzip来压缩/解压缩文件,加上该选项后可以将档案文件进行压缩,但还原时也一定要使用该选项进行解压缩。
j -> 用bzip2来压缩/解压缩文件,加上该选项后可以将档案文件进行压缩,但还原时也一定要使用该选项进行解压缩。


注意:

这两个参数,每次仅使用一个。

对压缩包的名字做个规范,用于分辨压缩包是用哪种压缩方式打的包。

使用gzip压缩的,命名为 压缩包名字.tar.gz

使用bzip2压缩的,命名为 压缩包名字.tar.bz2


1.png


打包后的两个文件都很小,说明压缩成功。


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


再说一解压参数:

C (大写)-> 解压到指定目录

1.png


2)打包一个文件夹


使用tar命令从上级目录打包一个文件夹和打包一个文件是一样的,并且打包文件夹也可以从文件夹里打包:


1.png

tar cf t.tar *
* 代表当前目录所有文件


3)tar包在Windows上是否可压缩与解压缩?


刚才用360压缩软件试了一下,可以解压在Linux下压缩的tar包。但360压缩软件不能打包成tar包,从网上找到一篇文章,可以使用7-Zip压缩软件压缩成tar包。《Windows如何压缩tar.gz格式


拓展:


tar包可以使用gzip、bzip2压缩,gzip、bzip2本身也是Linux下的两个压缩命令,可以单独拿来用。


gzip  [选项]  被压缩文件
bzip2 [选项]  被压缩文件


gzip:


1)压缩过程中不保留源文件


1.png


自动生成后缀为“gz”的文件。


2)不能对目录进行压缩


1.png


3)不能对多个文件进行打包压缩


1.png

-r或--recursive  递归处理,将指定目录下的所有文件及子目录一并处理。


使用-r参数,可以批量压缩文件下多个文件。它只是分别压缩,没有打包成一个文件。


4)解压缩:gunzip 命令(或者 gzip -d)


1.png


bzip2:


通过使用参数 -k(keep) 保留源文件

不能对目录进行压缩

不能对多个文件进行打包压缩(bzip2没有r参数)

解压缩:bunzip2 命令(或者bzip2 -d)


bzip2命令不做演示了。


总结:


gzip、bzip2只能对单个文件压缩,没有多个文件打包功能,所以说用处不大。都是用tar命令打包压缩文件或目录。


tar命令还是挺重要的,有时候我们从网上下载Linux软件安装包,格式很多都是tar压缩包


1.png