红菊直播官方版-红菊直播免费版app下载-红菊直播永久免费版下载

tar、gzip、zip、jar是什么,怎么查看?(tar gzip stdin not in gzip format)

更新時間:2024-08-13 05:58作者:小樂

原文:編碼日記(微信公眾號ID:codelogs),歡迎分享,轉(zhuǎn)載請保留出處。

簡介如果你是一個后端程序員,我想你一定見過后綴為*.tar.gz、*.zip、*.jar的文件。這些都是壓縮文件。這些文件是如何生成的?主要區(qū)別是什么?本文將帶您了解這些文件和配套的操作命令,以及它們的常用場景。

tar 和gzip Linux 上最常見的壓縮文件是*.tar.gz。各種開源軟件經(jīng)常會以這種格式發(fā)布源代碼或程序,因此作為后端開發(fā)人員,有必要了解它。

首先可以發(fā)現(xiàn)這個文件有兩個后綴,分別是.tar和.gz。這個名字是有原因的,因為它的制作過程分為兩部分,如下:

使用tar將目錄打包成單個.tar文件# 將applogs目錄打包成applogs.tar文件# 其中-c代表打包,-f指定打包文件名$ tar -cf applogs.tar applogs/# 可以找到即打包文件的大小與目錄占用的大小相似,因為tar只是將目錄中的文件組合成單個文件,并且默認(rèn)不壓縮$ du -sh applogs/applogs.tar177M applogs/175M applogs.tar 使用gzip將.tar文件壓縮成.gz文件# 使用gzip壓縮會生成applogs.tar.gz文件$ gzip -k applogs.tar# 可以發(fā)現(xiàn)壓縮后文件大小明顯變小$ du -sh applogs.tar applogs.tar.gz175M applogs.tar8.8M applogs.tar.gz 這是*.tar.gz文件的制作過程。事實上,使用tar 命令可以將這兩步簡化為一步,如下:

# 打包壓縮,其中-z表示打包然后使用gzip壓縮$ tar -czf applogs.tar.gz applogs/# 解壓到當(dāng)前目錄$ tar -xzf applogs.tar.gz -C ./壓縮日志文件In另外,由于日志文件的內(nèi)容一般具有較高的重復(fù)率,這導(dǎo)致Linux經(jīng)常對后端系統(tǒng)產(chǎn)生的歷史日志文件進行壓縮和存儲,這樣可以顯著減少磁盤空間的使用。

基于這種情況,Linux上誕生了很多查看壓縮日志文件的命令,如zcat、zgrep、zless等,如下:

# 自動解壓文件并輸出文件內(nèi)容$ zcat applogs.tar.gz # 自動解壓文件并在其中搜索。用法類似于grep $ zgrep -a 'error' applogs.tar.gz 這比先愚蠢地解壓要好。文件中,在文件內(nèi)搜索效率更高。

tar與其他壓縮算法另外,除了gzip之外,tar還可以與其他壓縮算法配合使用,例如bzip2、xz等,如下:

-j, --bzip2 通過bzip2 過濾存檔-J, --xz 通過xz 過濾存檔--lzip 通過lzip 過濾存檔--lzma 通過xz 過濾存檔--lzop 通過lzop 過濾存檔-z, - -gzip, --gunzip, --ungzip 通過gzip 過濾存檔--zstd 通過zstd 過濾存檔-Z, --compress, --uncompress 通過compresszip 過濾存檔,jarzip 也是常見的壓縮文件格式。后綴為*.zip。與上面的tar和gzip不同,zip集成了打包和壓縮兩個過程。 Linux下對應(yīng)的操作命令是zip和unzip,如下:

# 創(chuàng)建zip壓縮文件$ zip -r applogs.zip applogs/# 查看zip壓縮文件中有哪些文件$ unzip -l applogs.zipArchive: applogs.zip Length Date Time Name--------- --- - ------ ----- ---- 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.----------------203039002140 files#解壓zip文件, -d 指定解壓目錄$ unzip applogs.zip -d ./與gzip類似,zip也自帶了一些方便特定場景的命令工具,如zipinfo、zipgrep等,如下:

# zipinfo 查看zip 文件包含哪些文件$ zipinfo applogs.zipArchive: applogs.zipZip 文件大小: 9573195 字節(jié),條目數(shù): 140drwxrwxrwx 3.0 unx 0 bx stor 22-Sep-17 12:58 applogs/-rwxrwxrwx 3. 0 unx 99166 tx defN 22-九月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 9 48 t x defN 8 月22 日- 09 15:08 applogs /demo.log.140 個文件,未壓縮203039002 字節(jié),壓縮9546235 字節(jié): 95.3%# zipgrep 自動解壓縮文件并在其中搜索。用法類似grep $ zipgrep 'error' applogs.zip 查看jar文件目前大多數(shù)Java項目都是基于spingboot的。眾所周知,spingboot會將項目打包成單個jar文件進行部署,但實際上,jar文件本質(zhì)上是zip格式。與zip文件相比,它只多了一個META-INF/MANIFEST.MF文件。如下:

$ unzip -p app.jar META-INF/MANIFEST.MFManifest-Version: 1.0Spring-Boot-Classpath-Index: BOOT-INF/classpath.idxImplementation-Version: 0.0.1-SNAPSHOTSpring-Boot-Layers-Index: BOOT-INF/層。 idxStart-Class: com.example.demo.DemoApplicationSpring-Boot-Classes: BOOT-INF/classes/Spring-Boot-Lib: BOOT-INF/lib/Build-Jdk-Spec: 1.8Spring-Boot-Version: 2.4.0Created-By: Maven Jar P lugin 3.2.0Main-Class: org.springframework.boot.loader.JarLauncher 如上所示,MANIFEST.MF文件指定了jar包的Main-Class,這樣當(dāng)執(zhí)行java -jar app.jar時,java就會知道是哪個class找到main方法,而spingboot打包的jar無非就是把啟動類替換成自己的。

很多時候,我們需要確認(rèn)jar文件的內(nèi)容。比如我想在app.jar中查看spingboot內(nèi)嵌的tomcat的線程池配置大小,可以這樣查看:

$ zipgrep 'max-thread' app.jar BOOT-INF/classes/application.yml: max-threads: 500 這個比jdk自帶的jar命令方便多了。如果你是一名Java開發(fā)的學(xué)生,這個命令應(yīng)該成為你的開發(fā)工具箱中的其中之一。

總結(jié)ok,壓縮文件和命令都介紹得差不多了,我們簡單總結(jié)一下:

tar、gzip:用于打包或解壓縮*.tar.gz 文件的命令。盡管它們是兩個命令,但它們幾乎總是一起使用。 zip、unzip:用于打包或解壓縮*.zip 文件的命令。值得注意的是,它們還可以處理*.jar文件,并且在搜索場景中,使用zipgrep更方便。 less命令實際上可以直接打開這些壓縮文件。甚至可以打開png、pdf等廣義的壓縮文件!

另外,Linux平臺上其實還有一些其他的壓縮命令,比如bzip2、xz、7z、rar等,我就不一一介紹了。如果有興趣可以查看Linux man文檔。

為您推薦

國學(xué)堂‖ “一畝三分地”通常表示小地盤小算盤,那么,為什么不是“一畝四分地”呢?

漢語是一種很奇妙的語言,有時它也會出現(xiàn)些奇怪的表述。譬如一畝三分地,用來表示自己的小地盤、小算計,略含貶義。仔細(xì)琢磨,就不免疑問:為啥這樣說?為啥畝數(shù)不大點兒?像十畝、百畝,聽著多有場面感??!為啥這個畝數(shù)還有零頭?為啥零頭不是四分、八分或九

2024-08-13 06:00

貨代必閱:國際物流名詞一網(wǎng)打盡(國際物流名稱大全)

貨代朋友們,在國際物流的廣袤戰(zhàn)場上,諸多專業(yè)名詞好似精良的武器,是我們?nèi)贅I(yè)務(wù)的關(guān)鍵。今天,小編精心整理了一些關(guān)鍵物流名詞解釋,助您裝備知識武器,馳騁物流疆場!一、Act of God(不可抗力)在物流運輸中,“Act of God”指各種

2024-08-13 05:59

結(jié)構(gòu)體變量和結(jié)構(gòu)體類型的定義(結(jié)構(gòu)體類型和結(jié)構(gòu)體變量的關(guān)系)

1.結(jié)構(gòu)體類型定義定義方式1:Typedef struct LNode { int data; // 數(shù)據(jù)域 struct LNode *next; // 指針域} *LinkList;定義方式2:struct LNode { int da

2024-08-13 05:59

全美最貴的ZIP Code排行榜,紐約市上榜9個(全美最貴的大學(xué))

小狐貍相信,沒來過美國的小伙伴們,事先都不太會關(guān)注郵政編碼,畢竟在國內(nèi)寄快遞只要填對了地址,那就絕對能送到地方噠~來到美國之后,你會發(fā)現(xiàn),被詢問ZIP Code成為了一種家常便飯,有時候不小心填寫錯了號碼還會被cancel訂單呢,你說掃不掃

2024-08-13 05:58

收藏!貨代在國際物流中的必備名詞解釋 國際貨代的含義

Act of God:指各種人類無法控制的情況。例如閃電,洪水,地震等。如果貨物受損的原因是Act of God,運送人通常在法律上可不負(fù)任何責(zé)任。Actual Gross Weight:貨柜本身的重量加上裝在貨柜內(nèi)的貨物之總重量。Actu

2024-08-13 05:57

分享:美國郵政編碼身世解密(美國郵政編碼是幾位數(shù))

聽說大家對于美國郵政編碼有疑問?小U今天就來帶大家深度了解一下美國郵編,認(rèn)識它,熟悉它,最后攻克它!既然說到郵政編碼,那就得先來看一下郵政編碼的含義。郵政編碼(ZIP CODE),又稱郵遞區(qū)號,是一個國家或地區(qū)為實現(xiàn)郵件分揀自動化和郵政網(wǎng)絡(luò)

2024-08-13 05:57

加載中...