前言
前面学习了文件的查找,这篇文章将学习Linux中文件的打包及解压、文件的解包和解压。这就是这篇文章的学习目标,学会如何打包压缩,解包解压。
什么是压缩?
压缩的原理就是去重法,在一个目录或者文件中有多个重复的内容,在压缩过程中会将这些重复的内容用简短的内容来代替,压缩的文件是无法直接打开的,需要经过解压才可以打开使用。
tar的介绍与使用
简介
tar命令是Unix/Linux系统中备份文件的可靠方法,几乎可以作用于任何环境中,他的使用权限是所有用户。
建议针对目录。
打包压缩文件
命令语法:语法:tar 选项 压缩包名称 源文件
选项可用:
● -cf:c是create f是file,cf是打包。
● -czf:gzip压缩类型压缩文件,z是gzip。
● -cjf:bzip压缩类型压缩文件,j是bzip。
● -cJf:xzip压缩类型压缩文件,J是xzip。
注意:czf、cjf、cJf这些选项的字母顺序不能乱,不然会报错。
打包文件(不压缩)
命令:tar -cf 压缩名 需要压缩的文件
代码如下(示例):
//查看test文件内容 [root@localhost ~]# ll /test 总用量 0 //打包etc文件到test/目录下,并且名称为tar.tar [root@localhost ~]# tar -cf /test/tar.tar /etc tar: 从成员名中删除开头的“/” //查看test目录内容 [root@localhost ~]# ll /test 总用量 38272 -rw-r--r--. 1 root root 39188480 10月 31 14:14 tar.tar
仅仅是打包了etc/目录,并没有压缩。
gzip压缩类型压缩文件
命令:tar -czf 压缩名 需要压缩的文件
代码如下(示例):
//调换f和z的顺序压缩文件失败 [root@localhost ~]# tar -cfz /test/tar-gzip.tar /etc tar: 从成员名中删除开头的“/” tar: /test/tar-gzip.tar:无法 stat: 没有那个文件或目录 tar: 由于前次错误,将以上次的错误状态退出 //并没有压缩成功 [root@localhost ~]# ll -h /test/ 总用量 38M -rw-r--r--. 1 root root 38M 10月 31 14:14 tar.tar //正确顺序czf压缩etc到test目录,压缩包名称为tar-gizip.tar [root@localhost ~]# tar -czf /test/tar-gzip.tar /etc tar: 从成员名中删除开头的“/” //查看test下文件内容 [root@localhost] ll -h /test/ 总用量 50M -rw-r--r--. 1 root root 12M 10月 31 14:36 tar-gzip.tar -rw-r--r--. 1 root root 38M 10月 31 14:14 tar.tar
由代码可以看出czf这三个字母的顺序不能颠倒,否则会报错。如图所见,仅仅打包的文件大小为38M,压缩文件大小为12M,文件大小明显减少很多,为我们省去空间,这就是压缩的目的。
bzip压缩类型压缩文件
命令:tar -cjf 压缩文件名 需要压缩的文件
代码如下(示例):
//使用bzip格式解压文件etc到test目录,压缩包名为tar-bzip.tar [root@localhost ~]# tar -cjf /test/tar-bzip.tar /etc tar: 从成员名中删除开头的“/” [root@localhost ~]# ll -h /test 总用量 60M -rw-r--r--. 1 root root 11M 10月 31 14:41 tar-bzip.tar -rw-r--r--. 1 root root 12M 10月 31 14:36 tar-gzip.tar -rw-r--r--. 1 root root 38M 10月 31 14:14 tar.tar
使用cjf选项压缩文件的时候会发现压缩时间比czf选项压缩文件时间长。
xzip压缩类型压缩文件
命令:tar -cJf 压缩文件名 需要压缩的文件
代码如下(示例):
//以xzip格式压缩etc目录到test目录,压缩包名为/tar-xzip.tar [root@localhost ~]# tar -cJf /test/tar-xzip.tar /etc tar: 从成员名中删除开头的“/” [root@localhost ~]# ll -h /test 总用量 68M -rw-r--r--. 1 root root 11M 10月 31 14:41 tar-bzip.tar -rw-r--r--. 1 root root 12M 10月 31 14:36 tar-gzip.tar -rw-r--r--. 1 root root 38M 10月 31 14:14 tar.tar -rw-r--r--. 1 root root 8.3M 10月 31 14:46 tar-xzip.tar
如图所示,各种压缩方法的压缩文件后的大小有所不一样,当我们压缩的时候明显感觉使用不同的方法压缩文件,等待的时间也是不一样的,压缩时间和压缩比例成正比,压缩后的文件大小越小,压缩所需要的时间越长,在生产环境下,我们一般追求速率,一般选择压缩时间短的压缩方法进行对文件的压缩。
解包解压文件
简介
打包压缩后的文件不是目录了是文件用cat查看会乱码,不是目录是无法用命令进入到里面的,这个时候我们需要对压缩文件进行解包解压操作。
解压缩(解压到当前目录)
命令:tar -xf 压缩包名称
代码如下(示例):
//进入/test目录 [root@localhost ~]# cd /test [root@localhost test]# pwd /test //解压tar-gzip到当前目录 [root@localhost test]# tar -xf /test/tar-gzip.tar //查看当前目录信息,etc解压成功 [root@localhost test]# ll 总用量 69240 drwxr-xr-x. 140 root root 8192 10月 20 15:18 etc -rw-r--r--. 1 root root 10663380 10月 31 14:41 tar-bzip.tar -rw-r--r--. 1 root root 12337613 10月 31 14:36 tar-gzip.tar -rw-r--r--. 1 root root 39188480 10月 31 14:53 tar.tar -rw-r--r--. 1 root root 8688348 10月 31 14:46 tar-xzip.tar //切换到tartest目录 [root@localhost test]# cd /tartest [root@localhost tartest]# pwd /tartest //解压tar-gzip到当前目录 [root@localhost tartest]# tar -xf /test/tar-gzip.tar //查看当前目录信息,解压文件成功 [root@localhost tartest]# ll 总用量 12 drwxr-xr-x. 140 root root 8192 10月 20 15:18 etc
如代码所示,切换不同的目录解压文件,解压后的文件到了当前所在目录。
解压缩(指定解压到的目录)
命令:tar -xf 需要接下的压缩包 -C 需要解压到的路径
代码如下(示例):
//创建两个新的文件夹 [root@localhost tartest]# mkdir /tartest1 [root@localhost tartest]# mkdir /tartest2 //解压tar-bzip.tar到tartest1目录中 [root@localhost tartest]# tar -xf /test/tar-bzip.tar -C /tartest1 //查看tartest1目录,指定解压路径成功 [root@localhost tartest]# ll /tartest1 总用量 12 drwxr-xr-x. 140 root root 8192 10月 20 15:18 etc //解压tar-bzip.tar到tartest2目录中 [root@localhost tartest]# tar -xf /test/tar-bzip.tar -C /tartest2 //查看tartest2目录,指定解压路径成功 [root@localhost tartest]# ll /tartest2 总用量 12 drwxr-xr-x. 140 root root 8192 10月 20 15:18 etc
如代码所示,指定解压路径后,解压后的文件会自动到指定的路径中。
总结
本篇文章主要学习了解压缩原理,压缩的好处可以节省空间,学习压缩解压文件的操作,并且需要注意压缩选项的字母顺序不能乱否则会报错操作失败。