Linux gzip命令压缩文件实现原理及代码实例

 更新时间:2020年08月24日 12:01:45   作者:邯郸-小刀  
这篇文章主要介绍了Linux gzip命令压缩文件实现原理及代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

gzip 是 Linux 系统中经常用来对文件进行压缩和解压缩的命令,通过此命令压缩得到的新文件,其扩展名通常标记为“.gz”。

再强调一下,gzip 命令只能用来压缩文件,不能压缩目录,即便指定了目录,也只能压缩目录内的所有文件。

gzip 命令的基本格式如下:

[root@localhost ~]# gzip [选项] 源文件

命令中的源文件,当进行压缩操作时,指的是普通文件;当进行解压缩操作时,指的是压缩文件。该命令常用的选项及含义如表 1 所示。

表 1 gzip 命令常用选项及含义

选项 含义
-c 将压缩数据输出到标准输出中,并保留源文件。
-d 对压缩文件进行解压缩。
-r 递归压缩指定目录下以及子目录下的所有文件。
-v 对于每个压缩和解压缩的文件,显示相应的文件名和压缩比。
-l 对每一个压缩文件,显示以下字段:
  • 压缩文件的大小;
  • 未压缩文件的大小;
  • 压缩比;
  • 未压缩文件的名称。
-数字 用于指定压缩等级,-1 压缩等级最低,压缩比最差;-9 压缩比最高。默认压缩比是 -6。

【例 1】基本压缩

gzip 压缩命令非常简单,甚至不需要指定压缩之后的压缩包名,只需指定源文件名即可。我们来试试:

[root@localhost ~]# gzip install.log
#压缩instal.log 文件
[root@localhost ~]# ls
anaconda-ks.cfg install.log.gz install.log.syslog
#压缩文件生成,但是源文件也消失了

【例 2】保留源文件压缩

在使用 gzip 命令压缩文件时,源文件会消失,从而生成压缩文件。这时有些人会有强迫症,就逼问笔者:能不能在压缩文件的时候,不让源文件消失?好吧,也是可以的,不过很别扭。

[root@localhost ~]# gzip -c anaconda-ks.cfg >anaconda-ks.cfg.gz
#使用-c选项,但是不让压缩数据输出到屏幕上,而是重定向到压缩文件中,这样可以缩文件的同时不删除源文件
[root@localhost ~]# ls
anaconda-ks.cfg anaconda-ks.cfg.gz install.log.gz install.log.syslog
#可以看到压缩文件和源文件都存在

【例 3】 压缩目录

我们可能会想当然地认为 gzip 命令可以压缩目录。 我们来试试:

[root@localhost ~]# mkdir test
[root@localhost ~]# touch test/test1
[root@localhost ~]# touch test/test2
[root@localhost ~]# touch test/test3 #建立测试目录,并在里面建立几个测试文件
[root@localhost ~]# gzip -r test/
#压缩目录,并没有报错
[root@localhost ~]# ls
anaconda-ks.cfg anaconda-ks.cfg.gz install.log.gz install.log.syslog test
#但是查看发现test目录依然存在,并没有变为压缩文件
[root@localhost ~]# ls test/
testl .gz test2.gz test3.gz
#原来gzip命令不会打包目录,而是把目录下所有的子文件分别压缩

在 Linux 中,打包和压缩是分开处理的。而 gzip 命令只会压缩,不能打包,所以才会出现没有打包目录,而只把目录下的文件进行压缩的情况。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 在Linux中如何查找最大的10个文件方法汇总

    在Linux中如何查找最大的10个文件方法汇总

    这篇文章主要给大家介绍了关于在Linux中如何查找最大的10个文件的一些方法,文中分别给大家介绍了四种方法,没种方法都通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧。
    2018-03-03
  • Apache压力测试工具的安装使用

    Apache压力测试工具的安装使用

    这篇文章主要介绍了Apache压力测试工具—安装并进行并发接口测试的实现,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-03-03
  • Linux下设置Vim编辑器里Tab的长度行号

    Linux下设置Vim编辑器里Tab的长度行号

    这篇文章主要介绍了Linux下设置Vim编辑器里Tab的长度行号 ,需要的朋友可以参考下
    2018-06-06
  • Linux passwd 命令的使用

    Linux passwd 命令的使用

    这篇文章主要介绍了Linux passwd 命令的使用,帮助大家更好的理解和学习Linux,感兴趣的朋友可以了解下
    2020-08-08
  • Linux网络配置和监控命令总结

    Linux网络配置和监控命令总结

    本文介绍了Linux系统中常用的网络配置和监控命令,包括ifconfig、hostname、route、netstat、ss、lsof、ping、traceroute、nslookup等命令的使用方法和作用,适用于系统管理员在日常管理和故障排查中的网络操作
    2024-09-09
  • Linux下memcache编译安装与基本使用教程

    Linux下memcache编译安装与基本使用教程

    memcache是一套分布式的高速缓存系统,特点为key-value 存储。这篇文章主要介绍了Linux下memcache编译安装与基本使用 ,需要的朋友可以参考下
    2018-09-09
  • linux下动态网站维护基本命令小结

    linux下动态网站维护基本命令小结

    这篇文章主要介绍了动态网站维护基本命令小结,主要是方便维护linux或unix服务器,需要的朋友可以参考下
    2016-05-05
  • 教你使用Apache搭建Http下载服务器

    教你使用Apache搭建Http下载服务器

    这篇文章主要介绍了使用Apache搭建Http下载服务器的详细过程,Apache2默认采用的是80端口号,因此直接通过公网ip或域名就能访问,需要的朋友可以参考下
    2022-10-10
  • Ubuntu VPS 简易安装LAMP教程

    Ubuntu VPS 简易安装LAMP教程

    LAMP是Linux、Apache、MySQL和PHP的首字母缩写词,本教程将引导你安装基于Ubuntu10.10系统的Apache2服务器,支持PHP5(mod_php)和MySQL。
    2011-02-02
  • 详解把Node.js项目部署到阿里云服务器(CentOs)

    详解把Node.js项目部署到阿里云服务器(CentOs)

    本篇文章主要介绍了把Node.js项目部署到阿里云服务器,非常具有实用价值,需要的朋友可以参考下
    2017-04-04

最新评论