原文:钉钉日记(微信微信官方账号ID: codelogs),欢迎分享,转载请保留出处。
简介
如果你是后端程序员,我想你一定见过*.tar.gz,*的文件。zip和*。jar后缀。这些是压缩文件。这些文件是如何生成的?主要区别是什么?本文将带您浏览这些文件、支持的操作命令及其常用场景。
tar与gzip
Linux上最常见的压缩文件是*.tar.gz,各种开源软件经常以这种格式发布源代码或程序,所以作为一个后端开发人员,还是有必要了解一下的。
首先我们可以发现这个文件有两个后缀,分别是。焦油和。gz,而取这个名字是有原因的,因为它的生产过程分为两部分,如下:
使用tar将目录打包成单个.tar文件
#将applogs目录打包成applogs.tar文件#其中-c代表包,-f指定包文件名$ tar-cf applogs.tar AppLogs/#可以发现,包文件的大小和目录所占的大小差不多,因为tar只是将目录中的文件组装成一个文件。默认情况下,$ du-Shaplogs/Applogs . tar 177m Applogs/175m applogs.tar使用gzip进行压缩。tar文件放入。gz文件#用gzip压缩,会生成Applogs.tar.gz文件$ gzip -k applogs.tar#并且可以发现压缩后文件体积明显减小$ du-sh applogs.tar applegs . tar . gz 175 maplogs . tar 8.8m applogs.tar.gz这是*.tar.gz文件的制作过程,其实这两步可以用tar命令简化为一步,如下:
#打包压缩,其中-z代表打包然后压缩$ tar-czf applogs.tar.gz Applogs/#到当前目录$ tar-xzf Applogs . tar . gz-c ./压缩日志文件
。另外,由于日志文件的高重复率,后端系统生成的历史日志文件往往被压缩存储在Linux上,可以大大减少磁盘/[
基于这种情况,一些用于查看压缩日志文件的命令,如zcat、zgrep、zless等。,都是在Linux上诞生的,如下:
#自动解压文件,并将文件的内容输出到$ zcatalogs.tar.gz #自动解压文件,并在其中搜索。用法类似于grep $ zgrep-a & # 39;错误& # 39;Applogs.tar.gz,这比愚蠢地先解压缩文件,然后再搜索它们要有效得多。
Tar和其他压缩算法
另外,除了gzip,tar其实还可以和其他压缩算法匹配,比如bzip2和xz,如下:
-j,- bzip2通过bzip2 -J,- xz通过xz - lzip过滤存档通过lzip过滤存档- lzma通过xz - lzop过滤存档通过lzop过滤存档,- gzip,- gunzip,- ungzip通过gzip过滤存档- zstd通过zstd -Z过滤存档,- compress, -解压缩通过压缩过滤存档zip也是一种常见的压缩文件格式,后缀为*.zip,与上面的tar和gzip不同的是,zip结合了打包和压缩两个过程,Linux下对应的操作命令是zip和unzip,如下:
#创建zip压缩文件$ zip-rapplogs.zipapps/#检查zip压缩文件中的哪些文件是$ unzip-zip logs . zip archive:applegs . zip length date time name-0 2022-09-17 12:58 applegs/99166 2022-09-16 18:20 applogs/Demo . 2022-09-16.0 . log 13177092 2022-09-17 13:37 applogs/Demo . 2022原木...- 203039002 140 files #解压zip文件,-d指定解压目录$ unzipplogs . zip-d ./与gzip类似,zip也配备了许多方便特定场景的命令工具,如zipinfo、ZipG等。
# zipinfo查看zip文件包含哪些文件$ zip info applegs . zip archive:applegs . zip zip文件大小:9573195字节,条目数:140 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...140个文件,203039002字节未压缩,9546235字节压缩:95.3% # ziprep自动解压缩文件并在其中搜索。用法类似于grep的$ zipgrep & # 39错误& # 39;Applogs.zip查看jar文件
目前大部分java项目都是基于spingboot的。众所周知,spingboot将项目打包成单个jar文件进行部署,但实际上,jar文件是zip格式的,这只是多了一个META-INF/MANIFEST。MF文件比zip文件大,如下:
$ unzip-p app . jar META-INF/MANIFEST。MF MANIFEST-Version:1.0 Spring-Boot-Class path-Index:Boot-INF/Class path . idx implementation-Version:0 . 0 . 1-snapshot Spring-Boot-Layers-Index:Boot-INF/Layers . idx start-Class:com . example . demo . demoapplicationspring-Boot-Classes:Boot-INF/Classes/Spring-Boot-Lib:Boot-INF/Lib/Build-JDK-spec:1.8 Spring-Boot-Version:2 . 4 . 0创建者:maven jar插件3.2.0MF文件指定了jar包的Main-Class,这样在执行java -jar app.jar的时候,java就知道要找哪个类的Main方法了,spingboot打包的jar无非就是用自己的替换startup类。
很多时候,我们需要确认jar文件的内容。例如,我想在app.jar中查看spingboot中嵌入的tomcat的线程池配置大小,可以查看如下:
$ zipgrep & # 39最大线程& # 39;app . jar boot-INF/classes/application . yml:max-threads:500这比jdk自带的jar命令方便多了。如果你是java开发的同学,这个命令应该成为你开发工具箱的一员。
总结
好了,压缩文件和命令差不多了。我们简单总结一下:
tar、gzip:用于打包或解压*.tar.gz文件的命令,虽然它们是两个命令,但几乎都是一起使用的。zip、unzip:用于打包或解压*.zip文件的命令,值得注意的是,它们同样可处理*.jar文件,且在搜索场景中,使用zipgrep更方便。
less命令其实可以直接打开这些压缩文件,甚至可以打开png、pdf等广义的压缩文件!
另外,Linux平台上其实还有一些其他的压缩命令,比如bzip2、xz、7z、rar等。,所以就不一一介绍了。如果您感兴趣,请查看Linux man文档。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。
本文来自网络,若有侵权,请联系删除,作者:苏普空间,如若转载,请注明出处:http://www.webvisioncctv.com/68947.html