在Windows上,我们经常会把某一些文件压缩成一个包
目的便于好管理,更方便传输。
我们用winscp往服务器传文件时,你就会发现,如果你传输的是一个文件夹,文件夹里有上千上万的文件和子目录,传输过程会非常慢。它需要一个一个传,传输过程中还容易中断,造成部分文件传输不完整。
如果先把整个文件夹压缩成一个压缩包,再上传,再解压,那速度要快很多,还不容易出现部分文件不完整的问题。
在Windows上压缩文件,一般都是使用各种压缩软件,
操作起来非常方便。在Linux中,我们怎么去压缩文件呢?Windows中的压缩包与Linux中的压缩包是否可以相互解压。
那这节我们就学习Linux下文件压缩打包的相关命令。第一个tar命令:
tar-归档管理
计算机中的数据经常需要备份,tar是Unix/Linux中最常用的备份工具,此命令可以把一系列文件归档到一个大文件中,也可以把档案文件解开以恢复数据。
tar [参数] 打包后文件名(.tar) 文件或文件夹
参数:
c -> create,创建新的档案文件。如果用户想备份一个目录或是一些文件,就要选择这个选项。 x -> 从压缩文件中释放文件。 c命令与x命令互斥,tar命令要么归档要么解档。二选其一。 f -> 指定压缩文件的名字,这个选项属于必选的。 v -> 列出归档解档的详细过程
1)打包一个文件
演示:
①
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.tar比a.sh大很多,这感觉没有做压缩。对,上面的命令我们只是做了一个打包,并没有压缩文件。想要压缩文件,还需要参数:
z -> 用gzip来压缩/解压缩文件,加上该选项后可以将档案文件进行压缩,但还原时也一定要使用该选项进行解压缩。 j -> 用bzip2来压缩/解压缩文件,加上该选项后可以将档案文件进行压缩,但还原时也一定要使用该选项进行解压缩。
注意:
这两个参数,每次仅使用一个。
对压缩包的名字做个规范,用于分辨压缩包是用哪种压缩方式打的包。
使用gzip压缩的,命名为 压缩包名字.tar.gz
使用bzip2压缩的,命名为 压缩包名字.tar.bz2
打包后的两个文件都很小,说明压缩成功。
说明:tar命令很特殊,其参数前面可以使用“-”,也可以不使用。
再说一解压参数:
C (大写)-> 解压到指定目录
2)打包一个文件夹
使用tar命令从上级目录打包一个文件夹和打包一个文件是一样的,并且打包文件夹也可以从文件夹里打包:
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)压缩过程中不保留源文件
自动生成后缀为“gz”的文件。
2)不能对目录进行压缩
3)不能对多个文件进行打包压缩
-r或--recursive 递归处理,将指定目录下的所有文件及子目录一并处理。
使用-r参数,可以批量压缩文件下多个文件。它只是分别压缩,没有打包成一个文件。
4)解压缩:gunzip 命令(或者 gzip -d)
bzip2:
通过使用参数 -k(keep) 保留源文件
不能对目录进行压缩
不能对多个文件进行打包压缩(bzip2没有r参数)
解压缩:bunzip2 命令(或者bzip2 -d)
bzip2命令不做演示了。
总结:
gzip、bzip2只能对单个文件压缩,没有多个文件打包功能,所以说用处不大。都是用tar命令打包压缩文件或目录。
tar命令还是挺重要的,有时候我们从网上下载Linux软件安装包,格式很多都是tar压缩包