Linux系統(tǒng)常見(jiàn)的壓縮命令和打包命令
在Linux的環(huán)境中,壓縮文件的擴(kuò)展名大多是: tar、tar.gz、*tgz、*gz、 *.Z 、 *.bz2、 *.xz。
這是因?yàn)長(zhǎng)inux支持的壓縮命令非常多,且不同的命令所用的壓縮技術(shù)并不相同,彼此之間可能就無(wú)法互通壓縮/解壓縮文件。所以,當(dāng)你要下載某個(gè)壓縮文件時(shí),自然就需要知道該文件是由哪中壓縮命令所制作出來(lái)的,好用來(lái)對(duì)照著解壓縮,下面我們就列出了幾個(gè)常見(jiàn)的壓縮文件擴(kuò)展名
*.Z compress程序壓縮的文件
*.zip zip程序壓縮的文件
*.gz gzip程序壓縮的文件
*.bz2 bzip2程序壓縮的文件
*xz xz程序壓縮的文件
*.tar tar程序打包的文件,并沒(méi)有壓縮過(guò)
*.tar.gz tar程序打包的文件,并且經(jīng)過(guò)gzip的壓縮
*.tar.bz2 tar程序打包的文件,并且經(jīng)過(guò)bzip2的壓縮
*.tar.xz tar程序打包的文件,并且經(jīng)過(guò)xz的壓縮
下面就介紹一下Linux基本的壓縮命令
gzip
gzip可以說(shuō)是應(yīng)用最廣泛的壓縮命令了,目前gzip可以解開(kāi)compress、zip與gzip等軟件所壓縮的文件,至于gzip所建立的壓縮文件為*.gz,讓我們來(lái)看看這個(gè)命令的語(yǔ)法
gzip [選項(xiàng)] 文件名
選項(xiàng)參數(shù)
-c 把壓縮文件的數(shù)據(jù)輸入到屏幕上
-d 解壓縮文件
-t 可以校驗(yàn)壓縮文件的一致性,看看文件是否有誤
-v 可以顯示源文件/壓縮文件的等比信息
-1 壓縮的更快
-9 壓縮的更好
gzip命令使用實(shí)例
- 壓縮文件
gzip csq
# 上述命令將壓縮file.txt文件并生成一個(gè)新的gzip格式的文件file.txt.gz
- 解壓文件:
gzip -d csq.gz
# 上述命令將解壓file.txt.gz文件并生成一個(gè)新的file.txt文件。
- 查看壓縮比:
gzip -v csq
csq: 71.3% -- replaced with csq2.gz
# 上述命令將壓縮csq2文件,可以看出可憐的壓縮率才有71.3%
- 壓縮多個(gè)文件:
gzip *.txt
# 上述命令將壓縮所有以.txt結(jié)尾的文件
- 壓縮目錄:
gzip -r dir
# 上述命令將壓縮整個(gè)dir目錄及其中的文件
zcat命令使用實(shí)例
zcat是一個(gè)用于查看gzip格式壓縮文件內(nèi)容的命令行工具,它可以將gzip格式的壓縮文件展開(kāi),并直接輸出展開(kāi)后的內(nèi)容。
zcat命令的使用示例:
- 使用gzip命令壓縮文件:
gzip csq
# 上述命令將壓縮file.txt文件并生成一個(gè)新的gzip格式的文件file.txt.gz。
- 使用gzip命令解壓縮文件:
gzip -d csq.gz
# 上述命令將解壓file.txt.gz文件并生成一個(gè)新的file.txt文件。
- 使用zcat命令查看gzip格式壓縮文件內(nèi)容:
zcat csq.gz
# 上述命令將展開(kāi)file.txt.gz文件并將其內(nèi)容輸出到標(biāo)準(zhǔn)輸出。
bzip2
bzip2則是為了替換gzip并提供更佳的壓縮比而來(lái),bzip2甚至要比gzip還要好,bzip2的用法和gzip幾乎相同,下面看看bzip2的用法
bzip2 [選項(xiàng)] [文件名]
選項(xiàng):
-c 將壓縮的過(guò)程產(chǎn)生的數(shù)據(jù)輸出到屏幕上
-d 解壓縮文件
-k 保留原始文件
-z 壓縮文件
-v 顯示壓縮或解壓縮的信息
-f 強(qiáng)制覆蓋輸出文件并壓縮鏈接
-1 到 -9 指定壓縮級(jí)別,數(shù)字越大,壓縮比越高,但耗費(fèi)的時(shí)間也越長(zhǎng)
bzip2命令使用實(shí)例
- 壓縮文件:
bzip2 csq.txt
# 上述命令將壓縮file.txt文件并生成一個(gè)新的bzip2格式的文件file.txt.bz2。
- 解壓文件:
bzip2 -d csq.bz2
# 上述命令將解壓縮file.txt.bz2文件并生成一個(gè)新的file.txt文件。
- 查看壓縮比:
bzip2 -v csq
csq: 6.899:1, 1.160 bits/byte, 85.50% saved, 6961 in, 1009 out.
# 此時(shí)你就會(huì)看到csq 變成了 csq.bz2之外,你可以發(fā)現(xiàn)bzip2的壓縮比要比gzip好
# 壓縮率有原來(lái)gzip的71.3%提升到了bzip2的85.50%
- 壓縮多個(gè)文件:
bzip2 *.txt
# 上述命令將壓縮所有以.txt結(jié)尾的文件。
bzcat命令使用實(shí)例
- bzcat命令用于輸出bzip2格式壓縮文件的內(nèi)容。其語(yǔ)法為:
bzcat 文件名.bz2
- 輸出bzip2格式壓縮文件file.txt.bz2的內(nèi)容:
bzcat file.txt.bz2
xz
雖然說(shuō)bzip2已經(jīng)具有很棒的壓縮比,不過(guò)顯然某些自由軟件開(kāi)發(fā)者還不滿(mǎn)足,因此后來(lái)還推出了xz這個(gè)壓縮比更高的軟件,這個(gè)軟件的用法也跟gzip/bzip2幾乎一模一樣,我們來(lái)看看怎么使用
xz [選項(xiàng)] 文件名
選項(xiàng)
-d 解壓縮文件
-t 測(cè)試文件的完整性
-l 列出壓縮文件的相關(guān)信息
-k 保留原本的文件不刪除
-v 顯示壓縮或解壓縮的信息
-c 和之前兩個(gè)解壓縮命令一樣,就是將數(shù)據(jù)在屏幕上輸出
-1 到 -9 指定壓縮級(jí)別,數(shù)字越大,壓縮比越高,但耗費(fèi)的時(shí)間也越長(zhǎng)
xz命令使用實(shí)例
將文件csq壓縮成xz格式的文件csq.xz
xz -v csq
csq (1/1)
100 % 724 B / 6,893 B = 0.105
# 可以看到這個(gè)壓縮比例直接上升到100%,容量又進(jìn)一步下降更多
列出壓縮文件的信息,讀出壓縮文件的內(nèi)容
xz -l csq.xz
Strms Blocks Compressed Uncompressed Ratio Check Filename
1 1 724 B 6,893 B 0.105 CRC64 csq.xz
# 可以看到解壓縮之前文件大小和解壓縮后的文件大小,非常的人性化
解壓縮文件
xz -d csq.xz
保留原來(lái)文件,創(chuàng)建這個(gè)文件的壓縮文件
xz -k csq
# ls 當(dāng)前目錄就可以看到,原來(lái)的文件csq,和壓縮之后的文件csq.xz
xzcat命令使用實(shí)例
xzcat命令用于輸出xz格式壓縮文件的內(nèi)容。
xzcat 文件名.xz
打包命令:zip
zip可以將多個(gè)文件或目錄打包成一個(gè)zip文件
zip命令的語(yǔ)法如下:
zip [選項(xiàng)] [壓縮文件名] [文件或目錄名]
選項(xiàng):
-r:遞歸壓縮子目錄中的文件。
-q:安靜模式,不輸出任何消息。
-m:壓縮后刪除原文件。
-j:僅壓縮文件,不包括目錄。
-u:更新壓縮文件,僅添加新文件和已修改的
zip命令的使用實(shí)例
將文件或目錄壓縮成zip文件:
zip -r compressed.zip directory/ csq/
# 這個(gè)命令將目錄"directory/" 和 “csq”及其所有子目錄和文件壓縮成一個(gè)名為"compressed.zip"的zip文件。
添加文件到已有的zip文件:
zip -u compressed.zip file.txt
# 這個(gè)命令將文件"file.txt"添加到名為"compressed.zip"的zip文件中。
unzip
unzip命令可以將zip格式的文件解壓縮到指定的目錄中,或者將其解壓縮到當(dāng)前目錄下。下面詳細(xì)介紹一下unzip命令的使用方法。
unzip命令的基本語(yǔ)法如下:
unzip [選項(xiàng)] 文件名.zip [-d 目標(biāo)目錄](méi)
選項(xiàng):
-q:安靜模式,不輸出任何信息。
-o:覆蓋已有的文件。
-j:只解壓縮文件,不創(chuàng)建目錄。
-d 目標(biāo)目錄:指定解壓縮后的文件存放的目錄,默認(rèn)為當(dāng)前目錄。
unzip命令的使用示例
- 將文件file.zip解壓縮到當(dāng)前目錄:
unzip file.zip
- 將文件file.zip解壓縮到目錄/home/user/下:
unzip file.zip -d /home/user/
- 只解壓縮文件file.zip中的所有txt文件,并將其解壓縮到當(dāng)前目錄:
unzip file.zip '*.txt'
- 將文件file.zip解壓縮到目錄/home/user/下,并覆蓋已有的文件:
unzip -o file.zip -d /home/user/
打包命令:tar
tar是一個(gè)常用的Linux打包命令,可以將多個(gè)文件或目錄打包成一個(gè)文件。tar本身不進(jìn)行壓縮,但可以配合gzip、bzip2等工具進(jìn)行壓縮,接下來(lái)我們來(lái)看看他的語(yǔ)法
tar [選項(xiàng)] 文件名
選項(xiàng):
-c 新建打包文件
-f 指定打包后的文件名
-v 顯示打包過(guò)程
-x 解包
-t 查看打包文件的內(nèi)容
-z 使用gzip進(jìn)行壓縮/解壓縮,時(shí)文件名最好為:*.tar.gz
-j 使用bzip2進(jìn)行壓縮/解壓縮,此時(shí)文件名最好為:*.tar.bz2
-J 使用xz進(jìn)行壓縮/解壓縮,此時(shí)文件名最好為:*.tar.xz
-C 這個(gè)選項(xiàng)用在解壓縮,若要在特定目錄解壓縮,可以使用這個(gè)選項(xiàng)
-P(小寫(xiě)) 保留備份數(shù)據(jù)的原本權(quán)限與屬性,常用于備份重要的配置文件
-p(大寫(xiě)) 保留絕對(duì)路徑,就是允許備份數(shù)據(jù)中含有根目錄存在的意思
--exclude=要排除打包的文件名或目錄名
tar命令使用案例
其實(shí)最簡(jiǎn)單的使用tar就只用記住下面的命令即可:
壓縮: tar -jcv file.tar.bz2 [要被壓縮的文件名字或者目錄名稱(chēng)]
查詢(xún): tar -jtv file.tar.bz2
解壓縮:tar -jxv file.tar.bz2 -C [指定解壓到的哪個(gè)目錄]
file.tar.bz2 是自己取的文件名,tar并不會(huì)主動(dòng)創(chuàng)建文件名,需要我們自定義,所以擴(kuò)展名就顯得很重要了,如果不加[-z][-j][-J]的話(huà),文件名最好取為 *.tar即可。如果是 -j選項(xiàng),代表bzip2的支持,因此文件名最好取為*.tar.bz2,因?yàn)閎zip2會(huì)產(chǎn)生.bz2的擴(kuò)展名,至于如果是加上了-z的gzip的支持,那文件名最好為*.tar.gz。
然后使用time查看-z ,-j,-J,哪個(gè)打包時(shí)間最長(zhǎng),哪個(gè)時(shí)間最短
[root@localhost ~]# time tar -jpcv -f etc.tar.bz2 /etc
...
...
real 0m3.928s
user 0m3.172s
sys 0m0.566s
[root@localhost ~]# time tar -zpcv -f etc1.tar.gz /etc
...
...
real 0m1.298s
user 0m1.061s
sys 0m0.395s
[root@localhost ~]# time tar -Jpcv -f etc2.tar.xz /etc
...
...
real 0m14.050s
user 0m13.251s
sys 0m1.293s
我們使用du -h 目錄來(lái)查看他們創(chuàng)建的壓縮文件所占用大小
[root@localhost ~]# du -h etc.tar.*
8.8M etc.tar.bz2
10M etc.tar.gz
7.2M etc.tar.xz
# 可以看出壓縮比越好當(dāng)然花費(fèi)的時(shí)間越長(zhǎng),雖然gzip速度塊,總時(shí)間不到1秒,但是壓縮率糟糕,使用xz的話(huà),雖然壓縮比最佳,不過(guò)要花14秒的可怕時(shí)間,還是僅僅備份7MB的文件!如果要備份很大的很久真的要考慮一下時(shí)間成本。
查看tar文件的數(shù)據(jù)內(nèi)容(可查看文件名)
[root@localhost ~]# tar -jvt -f etc.tar.bz2
....
....
drwxr-xr-x root/root 0 2023-04-06 15:25 etc/libreport/
drwxr-xr-x root/root 0 2020-04-02 21:38 etc/libreport/events/
drwxr-xr-x root/root 0 2023-04-06 15:25 etc/libreport/events.d/
-rw-r--r-- root/root 157 2022-02-24 01:09 etc/libreport/events.d/mdadm_
# 加上-v的選項(xiàng),詳細(xì)的文件權(quán)限/屬性都會(huì)被列出來(lái)。如果只想知道文件名可以把-v去掉
打包某目錄,但不含該目錄下的某些文件應(yīng)該怎么做呢?
假設(shè)我們要打包 /etc/yum 這幾個(gè)目錄,但卻不想要打包 /etc/yum/vars 和 /etc/yum/version-groups.conf文件,而且假設(shè)這個(gè)新的打包文件為 yum.tar.bz2 ,此時(shí)我們可以通過(guò) --exclude的幫忙。這個(gè)exclude就是不包含的意思,所以我們可以這樣做文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-754770.html
[root@localhost ~]# tar -jcv -f yum.tar.bz2 --exclude=/etc/yum/vars --exclude=/etc/yum/version-groups.conf /etc/yum/
tar: 從成員名中刪除開(kāi)頭的“/”
/etc/yum/
/etc/yum/protected.d/
/etc/yum/protected.d/systemd.conf
/etc/yum/pluginconf.d/
/etc/yum/pluginconf.d/fastestmirror.conf
/etc/yum/pluginconf.d/langpacks.conf
/etc/yum/fssnap.d/
以上就是Linux系統(tǒng)常見(jiàn)壓縮命令和解壓縮命令以及打包命令,可以根據(jù)需要進(jìn)行選擇
本文參考了《鳥(niǎo)哥Linux私房菜》這本書(shū)
文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-754770.html
到了這里,關(guān)于Linux系統(tǒng)常見(jiàn)的壓縮命令和打包命令(gzip,zcat,bzip2,bzcat,xz,xzcat,zip,unzip,tar)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!