简介
tar与gzip
压缩日志文件
tar与其它压缩算法
zip与jar
查看jar文件
总结
如果你是一名后端开发者,想必你对*.tar.gz、*.zip、*.jar后缀的文件并不陌生。这些都是压缩文件,但它们是如何生成的,又有什么关键区别呢?本文将带你深入了解这些文件及其相关的操作命令,以及它们常见的使用场景。
在Linux系统中,最常见的压缩文件格式是*.tar.gz,许多开源软件以这种格式发布源代码或程序。因此,作为后端开发者,了解这些是非常必要的。
首先,这个文件后缀名有两部分,即.tar和.gz,这也是由其制作过程决定的,分为两个步骤,如下:
1.使用tar命令将目录打包成单个.tar文件
#将applogs目录打包为applogs.tar文件 #其中-c代表打包、-f指定打包文件名 $ tar -cf applogs.tar applogs/ <h1>可以发现,打包文件大小与目录占用大小差不多,因为tar仅仅是将目录中的文件组合成单个文件,默认情况下不进行压缩</h1><p>$ du -sh applogs/ applogs.tar 177M applogs/ 175M applogs.tar
2.使用gzip命令将.tar文件压缩为.gz文件
#使用gzip压缩,会生成applogs.tar.gz文件 $ gzip -k applogs.tar</p><h1>可以发现压缩后文件体积明显变小</h1><p>$ du -sh applogs.tar applogs.tar.gz 175M applogs.tar 8.8M applogs.tar.gz
这就是*.tar.gz文件的制作过程,实际上这两步可以使用tar命令一步完成,如下:
#打包并压缩,其中-z代表打包后再使用gzip压缩 $ tar -czf applogs.tar.gz applogs/</p><h1>解压到当前目录</h1><p>$ tar -xzf applogs.tar.gz -C ./
由于日志文件通常具有很高的重复率,Linux系统经常会将后端系统生成的历史日志文件压缩后存储,以大幅减少磁盘空间占用。
基于这种需求,Linux上开发了一些查看压缩日志文件的命令,如zcat、zgrep、zless等,如下:
#自动解压文件,并将其中文件内容输出 $ zcat applogs.tar.gz</p><h1>自动解压文件,并在其中搜索,用法和grep类似</h1><p>$ zgrep -a 'error' applogs.tar.gz
这种方法比先解压文件再搜索要高效得多。
除了gzip外,tar还可以与其他压缩算法结合使用,如bzip2、xz等,如下:
-j, --bzip2 filter the archive through bzip2 -J, --xz filter the archive through xz --lzip filter the archive through lzip --lzma filter the archive through xz --lzop filter the archive through lzop -z, --gzip, --gunzip, --ungzip filter the archive through gzip --zstd filter the archive through zstd -Z, --compress, --uncompress filter the archive through compress
zip同样是一种常见的压缩文件格式,后缀是*.zip,与tar和gzip不同的是,zip将打包与压缩两个过程合二为一。在Linux下对应的操作命令是zip与unzip,如下:
#创建zip压缩文件 $ zip -r applogs.zip applogs/</p><h1>查看zip压缩文件中有哪些文件</h1><p>$ unzip -l applogs.zip Archive: applogs.zip Length Date Time Name</p><hr /><pre class="brush:php;toolbar:false"> 0 2022-09-17 12:58 applogs/
99166 2022-09-16 18:20 applogs/demo.2022-09-16.0.log 13177092 2022-09-17 13:37 applogs/demo.2022-09-17.0.log 948 2022-08-09 15:08 applogs/demo.log ...
203039002 140 files
$ unzip applogs.zip -d ./
与gzip类似,zip也配套了一批适用于特定场景的命令工具,如zipinfo、zipgrep等,如下:
#zipinfo查看zip文件包含哪些文件 $ zipinfo applogs.zip Archive: applogs.zip 9573195 bytes 140 files drwxrwxrwx 3.0 unx 0 bx stor 22-Sep-17 12:58 applogs/ -rwxrwxrwx 3.0 unx 99166 tx defN 22-Sep-16 18:20 applogs/demo.2022-09-16.0.log -rwxrwxrwx 3.0 unx 13177092 tx defN 22-Sep-17 13:37 applogs/demo.2022-09-17.0.log -rwxrwxrwx 3.0 unx 948 tx defN 22-Aug-09 15:08 applogs/demo.log ... 140 files, 203039002 bytes uncompressed, 9546235 bytes compressed: 95.3%</p><h1>zipgrep自动解压文件,并在其中搜索,用法和grep类似</h1><p>$ zipgrep 'error' applogs.zip
目前,大多数Java项目都是基于Spring Boot的,Spring Boot会将项目打包成单个jar文件来部署,但实际上jar文件本质上就是zip格式,只是多了一个META-INF/MANIFEST.MF文件,如下:
$ unzip -p app.jar META-INF/MANIFEST.MF Manifest-Version: 1.0 Spring-Boot-Classpath-Index: BOOT-INF/classpath.idx Implementation-Version: 0.0.1-SNAPSHOT Spring-Boot-Layers-Index: BOOT-INF/layers.idx Start-Class: com.example.demo.DemoApplication Spring-Boot-Classes: BOOT-INF/classes/ Spring-Boot-Lib: BOOT-INF/lib/ Build-Jdk-Spec: 1.8 Spring-Boot-Version: 2.4.0 Created-By: Maven Jar Plugin 3.2.0 Main-Class: org.springframework.boot.loader.JarLauncher
如上所示,MANIFEST.MF文件指定了jar包的Main-Class,这样当执行java -jar app.jar时,Java就知道去哪个类找main方法了,而Spring Boot打包的jar,只是将启动类换成了自己的。
很多时候,我们需要确认jar文件中的内容,比如查看Spring Boot内嵌的Tomcat的线程池配置大小,可以如下查看:
$ zipgrep 'max-thread' app.jar BOOT-INF/classes/application.yml:max-threads: 500
这种方法比JDK自带的jar命令方便得多,如果你是Java开发者,这个命令应该成为你开发工具箱中的一员。
好了,关于压缩文件与命令的介绍就到这里了,简单总结一下:
less命令实际上可以直接打开这些压缩文件,它甚至可以打开png、pdf等广义上的压缩文件!
此外,Linux平台上还有其他一些压缩命令,如bzip2、xz、7z、rar等,这里就不一一介绍了,有兴趣的可以查看Linux man文档。
到此为止,这篇关于Linux实现压缩文件的生成与查看的常用命令总结的文章就介绍到这里了。更多相关Linux压缩文件的内容,请搜索我们之前的文章或继续浏览下面的相关文章,希望大家以后多多支持我们!
以上就是Linux实现压缩文件的生成与查看的常用命令总结的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号