最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Linux實(shí)現(xiàn)壓縮文件的生成與查看的常用命令總結(jié)

 更新時(shí)間:2022年09月19日 14:07:10   作者:扣釘日記  
如果你是后端程序員,我想你一定見過*.tar.gz、*.zip、*.jar后綴的文件吧,這些都是壓縮文件,那這些文件都是怎么生成的,又有哪些關(guān)鍵區(qū)別呢?本文將帶你一起了解這些文件和配套的操作命令,以及其經(jīng)常使用的場(chǎng)景

簡(jiǎn)介

如果你是后端程序員,我想你一定見過*.tar.gz、*.zip、*.jar后綴的文件吧,這些都是壓縮文件,那這些文件都是怎么生成的,又有哪些關(guān)鍵區(qū)別呢?本文將帶你一起了解這些文件和配套的操作命令,以及其經(jīng)常使用的場(chǎng)景。

tar與gzip

Linux上最常見的壓縮文件就是*.tar.gz了,各種開源軟件常以這種格式發(fā)布源碼或程序,所以作為一名后端開發(fā),還是很有必要了解一下的。

首先,可以發(fā)現(xiàn)這個(gè)文件后綴名有兩段,即.tar.gz,取這個(gè)名稱也是有原因的,因?yàn)樗闹谱鬟^程就分為兩個(gè)部分,如下:

1.使用tar將目錄打包成單個(gè).tar文件

#?將applogs目錄打包為applogs.tar文件
#?其中-c代表打包、-f指定打包文件名
$?tar?-cf?applogs.tar?applogs/

#?可以發(fā)現(xiàn),打包文件大小與目錄占用大小差不多,因?yàn)閠ar僅僅是把目錄中文件拼成單個(gè)文件,默認(rèn)并不壓縮??
$?du?-sh?applogs/?applogs.tar
177M????applogs/
175M????applogs.tar

3.使用gzip將.tar文件壓縮為.gz文件

#?使用gzip壓縮,會(huì)生成applogs.tar.gz文件
$?gzip?-k?applogs.tar

#?可以發(fā)現(xiàn)壓縮后文件體積明顯變小
$?du?-sh?applogs.tar?applogs.tar.gz
175M????applogs.tar
8.8M????applogs.tar.gz

這就是*.tar.gz文件的制作過程,其實(shí)這兩步使用tar命令可以簡(jiǎn)化為一步,如下:

#?打包并壓縮,其中-z代表打包后再使用gzip壓縮
$?tar?-czf?applogs.tar.gz?applogs/

#?解壓到當(dāng)前目錄
$?tar?-xzf?applogs.tar.gz?-C?./

壓縮日志文件

另外,由于日志文件內(nèi)容一般都有很高重復(fù)率,這導(dǎo)致Linux上經(jīng)常會(huì)將后端系統(tǒng)產(chǎn)生的歷史日志文件壓縮后存儲(chǔ)起來,這樣可以大幅減低磁盤空間占用。

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

#?自動(dòng)解壓文件,并將其中文件內(nèi)容輸出
$?zcat?applogs.tar.gz

#?自動(dòng)解壓文件,并在其中搜索,用法和grep類似
$?zgrep?-a?'error'?applogs.tar.gz

這比傻乎乎地先解壓文件,再在文件中搜索要高效多了。

tar與其它壓縮算法

另外,除了gzip外,tar其實(shí)也可以搭配其它壓縮算法,像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與jar

zip同樣是一種常見的壓縮文件格式,后綴是*.zip,與上面tar、gzip不同的是,zip將打包與壓縮兩個(gè)過程融合在一起了,在Linux下對(duì)應(yīng)的操作命令是zipunzip,如下:

#?創(chuàng)建zip壓縮文件
$?zip?-r?applogs.zip?applogs/

#?查看zip壓縮文件中有哪些文件
$?unzip?-l?applogs.zip
Archive:??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
...
---------?????????????????????-------
203039002?????????????????????140?files

#?解壓zip文件,-d指定解壓目錄
$?unzip?applogs.zip?-d?./

與gzip類似的是,zip也配套了一批方便特定場(chǎng)景使用的命令工具,如zipinfo、zipgrep等,如下:

#?zipinfo查看zip文件包含哪些文件
$?zipinfo?applogs.zip
Archive:??applogs.zip
Zip?file?size:?9573195?bytes,?number?of?entries:?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.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%

#?zipgrep自動(dòng)解壓文件,并在其中搜索,用法和grep類似
$?zipgrep?'error'?applogs.zip

查看jar文件

目前,絕大多數(shù)java項(xiàng)目都是基于spingboot的,眾所周知,spingboot會(huì)將項(xiàng)目打包成單個(gè)jar文件來部署,但其實(shí)jar文件本質(zhì)上就是zip格式,它相比zip文件只是多了一個(gè)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,這樣當(dāng)執(zhí)行java -jar app.jar時(shí),java就知道去哪個(gè)類找main方法了,而spingboot打包的jar,無非就是將啟動(dòng)類換成了自己的而已。

而很多時(shí)候,我們需要確認(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é),這個(gè)命令應(yīng)該成為你開發(fā)工具箱中的一員。

總結(jié)

ok,壓縮文件與命令介紹得差不多了,簡(jiǎn)單總結(jié)一下:

  • tar、gzip:用于打包或解壓*.tar.gz文件的命令,雖然它們是兩個(gè)命令,但幾乎都是一起使用的。
  • zip、unzip:用于打包或解壓*.zip文件的命令,值得注意的是,它們同樣可處理*.jar文件,且在搜索場(chǎng)景中,使用zipgrep更方便。

less命令其實(shí)可以直接打開這些壓縮文件,它甚至可以打開png、pdf等廣義上的壓縮文件!

另外,Linux平臺(tái)上其實(shí)還有一些其它的壓縮命令,如bzip2、xz、7z、rar等,就不一一介紹了,感興趣可查看Linux man文檔。

到此這篇關(guān)于Linux實(shí)現(xiàn)壓縮文件的生成與查看的常用命令總結(jié)的文章就介紹到這了,更多相關(guān)Linux壓縮文件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • linux下非root用戶運(yùn)行tomcat

    linux下非root用戶運(yùn)行tomcat

    這篇文章主要介紹了linux下非root用戶運(yùn)行tomcat ,需要的朋友可以參考下
    2017-12-12
  • shell腳本實(shí)現(xiàn)linux系統(tǒng)文件完整性檢測(cè)

    shell腳本實(shí)現(xiàn)linux系統(tǒng)文件完整性檢測(cè)

    這篇文章主要介紹了shell腳本實(shí)現(xiàn)linux系統(tǒng)文件完整性檢測(cè),本文給出的腳本使用對(duì)比MD5的方法,檢測(cè)linux系統(tǒng)文件是否被替換等問題,需要的朋友可以參考下
    2014-12-12
  • Linux 中的 Install命令

    Linux 中的 Install命令

    install命令的作用是安裝或升級(jí)軟件或備份數(shù)據(jù),它的使用權(quán)限是所有用戶。 本文重點(diǎn)給大家介紹Linux 中的 Install命令,感興趣的朋友一起看看吧
    2017-09-09
  • Shell定時(shí)刪除指定時(shí)間之前的文件

    Shell定時(shí)刪除指定時(shí)間之前的文件

    這篇文章主要介紹了Shell定時(shí)刪除指定時(shí)間之前的文件,本文用來刪除一個(gè)月之前的備份文件,并加入到crontag定時(shí)刪除,需要的朋友可以參考下
    2014-12-12
  • Bash腳本中Sleep命令的使用

    Bash腳本中Sleep命令的使用

    本文主要介紹了Bash腳本中Sleep命令的使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • Window11?WSL2?添加靜態(tài)IP的腳本

    Window11?WSL2?添加靜態(tài)IP的腳本

    這篇文章主要介紹了Window11?WSL2?添加靜態(tài)IP的腳本方法,通過一段腳本給?Windows?端的"vEthernet?(WSL)"加了IPv4?172.18.16.1,給?Linux?端的?eth0?添加?IPv4?172.18.16.1,在使用前,請(qǐng)按需調(diào)整網(wǎng)絡(luò)接口的名稱和IP地址,需要的朋友可以參考下
    2023-01-01
  • Shell腳本查看網(wǎng)卡實(shí)時(shí)流量

    Shell腳本查看網(wǎng)卡實(shí)時(shí)流量

    這篇文章主要介紹了Shell腳本查看網(wǎng)卡實(shí)時(shí)流量,本文直接給出實(shí)現(xiàn)代碼,需要的朋友可以參考下
    2014-12-12
  • shell腳本監(jiān)控linux系統(tǒng)內(nèi)存使用情況的方法(不使用nagios監(jiān)控linux)

    shell腳本監(jiān)控linux系統(tǒng)內(nèi)存使用情況的方法(不使用nagios監(jiān)控linux)

    在沒有nagios監(jiān)控軟件的情況下,只要服務(wù)器能上互聯(lián)網(wǎng),就可通過發(fā)郵件的方式來提醒管理員系統(tǒng)內(nèi)存的使用情況
    2014-02-02
  • shell 里面的奇葩字符實(shí)現(xiàn)

    shell 里面的奇葩字符實(shí)現(xiàn)

    這篇文章主要介紹了shell 里面的奇葩字符實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • except自動(dòng)登錄的幾段代碼分享

    except自動(dòng)登錄的幾段代碼分享

    except自動(dòng)登錄的幾段代碼,大家拿去學(xué)習(xí)吧
    2013-02-02

最新評(píng)論

瑞昌市| 苏尼特右旗| 洪江市| 岳普湖县| 花垣县| 桐城市| 泰和县| 遂平县| 上林县| 景东| 白城市| 通化市| 龙海市| 宿松县| 观塘区| 青铜峡市| 肇庆市| 贺州市| 巴里| 九寨沟县| 囊谦县| 开鲁县| 太和县| 香河县| 晋中市| 金塔县| 合山市| 黔西| 罗定市| 道真| 汉源县| 红原县| 溧水县| 吴川市| 凤冈县| 南涧| 武隆县| 井陉县| 海兴县| 枣庄市| 西华县|