压缩打包介绍
- 由于网络资源是有限的,机房服务器带宽非常昂贵
- 怎样用合理的使用带宽是很重要的
- 将文件压缩后,无论是存储还是传输,既节省服务器空间,又节省带宽
- 上图是目前主要的压缩格式
- 在linux里面,虽然不像windows一样,文件后缀名有严格限制
- 不管什么格式的文件,都可以自定义文件后缀
- 但是这样不利于管理,也不方便与他人沟通交流使用
- 所以还是应该按照文件内容正确的格式来命名文件后缀
gzip 压缩工具
- gzip是linux的一种压缩工具
- 从上图可以看到,有一个叫做 1.txt 的文件,文件大小是3.1MB,有37860行
- 现在使用 gzip 对1.txt进行压缩
- 压缩命令就是 gzip 1.txt 回车就完成了
- 然后使用 ls 查看当前目录
- 1.txt文件消失了,出现了一个新的文件,叫做 1.txt.gz
- 源文件被压缩后并重命名为了 1.txt.gz
- 如上图,使用 gzip -d 1.txt.gz 命令把 1.txt.gz 文件进行了解压缩
- 加上 -d 参数就可以对文件进行解压缩
- 下面使用 ls 查看目录,发现 1.txt.gz 不见了,1.txt 又出现了
- 1.txt.gz 被解压缩并重命名为了 1.txt
- 解压缩后查看文件大小,发现只有 1.4MB ,压缩前有 3MB 左右
- 因为原来的文件占用了很多虚的空间,压缩之后就把这些虚的空间消除掉了
- 重新解压缩后消除掉的虚的空间并不会还原,所以文件大小还是变小了
- 查看文件行数,跟原来一样,还是37860行,并没有因为文件变小而减少行数
- 使用 gzip -1 1.txt 重新压缩 1.txt 文件,其中 -1 代表压缩级别
- gzip 的压缩级别是从 1 到 9 的,压缩级别越高,压缩的越小,但是需要使用的cpu资源越多
- 如果不指定压缩级别,默认压缩级别是 6
- 现在指定压缩级别为 1 ,可以看到,du查看文件大小,1.txt.gz 为396kb
- 前面使用默认压缩级别 6 压缩之后文件大小是 344kb
- 降低压缩级别后,压缩的文件就没有那么小了
- 一般都是使用默认的级别,不需要调整大小
- 除了 -d 参数可以解压缩外,也可以使用 gunzip 来解压缩
- 如上图,命令 gunzip 1.txt.gz 就可以解压缩 1.txt.gz
- 可以使用 file 1.txt.gz 查看文件信息
- 可以看到,文件压缩方式是 gzip,压缩前的名字是1.txt,最后一次修改的时间,压缩级别是最大级别,这次用的是9级别压缩
- 想查看压缩文件的内容,可以使用 zcat 1.txt.gz 来查看1.txt.gz的内容
- zcat 的工作原理就是先解压缩,然后再查看
- 现在使用 -d 参数重新解压缩 1.txt.gz
- 然后使用 -c 参数重新压缩 1.txt
- gzip -c 1.txt > /tmp/1.txt.gz
- 这个命令是把 1.txt 压缩到 /tmp 目录下面,并命名为 1.txt.gz
- 但是源文件并不消失,可以看到,1.txt仍然存在,tmp目录下面多了一个1.txt.gz文件
- 使用 -c 参数就可以制作源文件的压缩文件并存放在指定的位置
- 这里就制作了一个源文件1.txt的压缩文件1.txt.gz并存放在/tmp目录下面
- 如上图,gzip -d -c /tmp/1.txt.gz > /root/tmp/d6z/2.txt
- 这个命令可以制作 /tmp/1.txt.gz 这个压缩文件的解压缩文件2.txt,并存放到/root/tmp/d6z目录
- 其中 -d 代表解压缩功能,-c 可以不删除源文件,将制作好的文件放到指定位置
- gzip 是不能压缩目录的,只能压缩文件
bzip2压缩工具
- bzip2 可以比 gzip 压缩的更小一些,但是会耗费更多的cpu资源
- 看上图,1.txt 大小是 1.4MB
- 使用 bzip2 1.txt 压缩之后,用du查看,大小变成了 88kb
- 之前使用gzip压缩后大小变成了300多kb
- 所以bzip2可以将文件压缩得比gzip小很多
- 可以使用 bzip2 -d 1.txt.bz2 解压缩,跟gzip一样,使用-d参数解压缩
- 然后重新压缩一次
- 还可以使用 bunzip2 1.txt.bz2 解压缩,跟gunzip差不多
- bunzip2同样不能压缩目录
- bzip2 同样可以使用 -c 参数制作源文件的压缩文件重命名并存放在指定位置
- bzip2 -c 1.txt > 1.txt.bz2 就制作了1.txt的压缩文件1.txt.bz2并存放在当前目录下
- 如图,bzip2 同样可以使用 -d -c 参数制作源文件的解压缩文件重命名并存放在指定位置
- 这里就将 1.txt.bz2 的解压缩文件 3.txt 存放在当前目录下
- bzip2 -9 1.txt 就可以指定压缩级别来压缩 1.txt
- bzip2 的压缩级别也有9级,不过默认压缩级别就是9
- 所以一般不需要指定压缩级别
- 可以使用 file 1.txt.bz2 来查看压缩文件信息
- file命令可以用在不知道文件格式的时候,可以用file查看到格式信息
- bzcat 可以查看用bzip2压缩的文件内容
xz压缩工具
- 不是非常常用的压缩工具,用法与gzip和bzip2大体一致
- xz 的压缩率比 gzip 和 bzip2 都高
- 可以看到,xz压缩之后的文件大小,比gzip和bzip2压缩后的都要小
- 如上图 xz -d 1.txt.xz 就可以解压缩 1.txt.xz 文件
- unxz 1.txt.xz 也可以解压缩 1.txt.xz文件
- xz -c 1.txt > 1.txt.xz 参数-c同样可以制作源文件的压缩文件重命名并制定存放位置
- xz -d -c 1.txt.xz > 4.txt 也可以制作源文件的解压缩文件重命名并制定存放位置
- 要读取xz压缩文件的内容,可以使用 xzcat 1.txt.xz 来查看
- xz 同样不支持压缩目录
zip 压缩工具
- zip支持压缩目录功能
- linux默认不支持windows的rar格式,需要下载工具才能解压缩rar
- 使用 yum install -y zip 安装zip
- 使用 yum install -y unzip 安装unzip
- 使用命令 zip 2.txt.zip 2.txt
- 就可以制作2.txt的zip压缩文件,不影响源文件,会出现一个新的zip压缩文件
- 压缩目录,需要 -r 参数
- zip -r tom.zip passwd d6z
- 意思是,把 passwd 文件和 d6z 目录压缩成一个压缩文件 tom.zip
- 使用 unzip tom.zip 解压这个压缩文件
- 会出现询问,是否覆盖,因为使用zip压缩文件不会删除源文件
- 有五个选项,这里选择 A 代表全部覆盖,然后回车
- yes代表覆盖一个,no代表不覆盖
- 因为zip文件里面有多个文件,如果不选择 All 那么每个文件都会询问一次
- unzip 同样可以指定目录,然后把压缩文件解压缩到目录里面,源文件不会消失
- 如图,把tom.zip解压缩到tmp2目录
- 但是只能指定目录,解压缩不能修改解压缩后的文件名
- 前面三个工具都可以使用命令查看压缩文件内容,但是zip是不能查看内容的
- 如图,zip只能查看压缩文件列表,不能查看内容,也就是说只能看里面有什么文件存在
tar打包工具
- 服务器传输文件,如果目录文件太多,需要一个一个传输,会耗费很多时间
- 如果把所有需要传输的文件打包成一个大文件,就可以节省很多时间
- 而且用tar打包后可能减小总的空间大小
- 因为每个文件占用空间是用块计算的
- 如果一个文件小于一个块,也会占用一个块的空间
- 如果把这些文件打包在一起,那么文件会互相填满之前多余的空间
- 所以有可能把原本多占用的块的空间节省出来
- tar -cvf tom.tar tmp2/ 就可以将tmp2目录打包成tom.tar文件
- 其中,-c 代表creat创建,打包文件时需要有的参数
- 而 -v 代表可视化,可以看到打包过程打包了什么文件进去
- 如果不需要看过程,可以不加 v
- 参数 -f 也是一定要有,代表文件名,打包文件名前面一定要有f参数
- 如果去掉 v 参数,重新打包一次,不会有任何提示
- 新打包的文件会直接覆盖原来打包的文件
- 如图,tar -xvf aminglinux.tar 就是解包命令
- 参数 x 就是解包选项,v是可视化选项,f是文件名前面必须有的
- 如果就在原来打包的目录解包
- 解包出来的文件会直接把源文件覆盖掉,不会有任何提示
- 如图,tar -tf aminglinux.tar 就可以查看打包文件的列表,看里面有什么文件
- 查看列表的参数是 t ,f 是文件名前面必须有的
- 如图,tar打包还支持过滤功能
- tar -cvf aminglinux.tar --exclude aming1 --exclude "*.txt" aminglinux 3.txt 4.txt
- 这条命令的意思是,首先把 aminglinux目录,3.txt,4.txt 三个目标打包在一起
- 并命名为 aminglinux.tar
- exclude选项的意思是,把这三个目标里面包含的 aming1目录过滤掉,aming1不会被打包进去
- 第二个exclude 就是把所有 .txt 结尾的文件都过滤掉,也不会被打包进去
打包并压缩
- tar打包的时候,是支持压缩的
- 之前的压缩软件,都可以在这里使用
- 这里 -czvf 就是在打包文件的同时压缩文件,z参数就是压缩选项
- 这里参数 z 表示使用的是 gzip 压缩工具,所以打包文件名称应该加上 .gz
- 这里 -cjvf 也是在打包的时候压缩文件,不过使用不同的压缩工具
- 参数 j 代表使用的压缩工具是 bzip2 ,所以压缩文件结尾要加上 .bz2
- 这里 -cJvf 也是打包压缩文件,参数更换为大写的j
- 参数 J 表示使用的工具是 xz ,所以文件结尾应该加上 .xz
- 解包的时候只要把参数 c 换成 x 就行了
- tar -tf 文件名 就可以查看文件列表
- 不管使用哪种工具压缩,或者没压缩,都可以使用 -tf 查看文件列表