(圖片來源)
在Linux的環境中,壓縮檔案的副檔名大多是:『*.tar, *.tar.gz, *.tgz, *.gz, *.Z, *.bz2, *.xz』,為什麼會有這樣的副檔名呢?不是說 Linux 的副檔名沒有什麼作用嗎?
這是因為 Linux 支援的壓縮指令非常多,且不同的指令所用的壓縮技術並不相同,當然彼此之間可能就無法互通壓縮/解壓縮檔案囉。 所以,當你下載到某個壓縮檔時,自然就需要知道該檔案是由哪種壓縮指令所製作出來的,好用來對照著解壓縮啊! 也就是說,雖然 Linux 檔案的屬性基本上是與檔名沒有絕對關係的, 但是為了幫助我們人類小小的腦袋瓜子,所以適當的副檔名還是必要的! 底下我們就列出幾個常見的壓縮檔案副檔名吧:
*.Z compress 程式壓縮的檔案; *.zip zip 程式壓縮的檔案; *.gz gzip 程式壓縮的檔案; *.bz2 bzip2 程式壓縮的檔案; *.xz xz 程式壓縮的檔案; *.tar tar 程式打包的資料,並沒有壓縮過; *.tar.gz tar 程式打包的檔案,其中並且經過 gzip 的壓縮 *.tar.bz2 tar 程式打包的檔案,其中並且經過 bzip2 的壓縮 *.tar.xz tar 程式打包的檔案,其中並且經過 xz 的壓縮
Linux上常見的壓縮指令就是 gzip, bzip2 以及最新的 xz ,至於 compress 已經退流行了。為了支援 windows 常見的 zip,其實 Linux 也早就有 zip 指令了! gzip 是由 GNU 計畫所開發出來的壓縮指令,該指令已經取代了 compress 。 後來 GNU 又開發出 bzip2 及 xz 這幾個壓縮比更好的壓縮指令!不過,這些指令通常僅能針對一個檔案來壓縮與解壓縮,如此一來, 每次壓縮與解壓縮都要一大堆檔案,豈不煩人?此時,那個所謂的『打包軟體, tar』就顯的很重要啦!
這個 tar 可以將很多檔案『打包』成為一個檔案!甚至是目錄也可以這麼玩。不過,單純的 tar 功能僅是『打包』而已,亦即是將很多檔案集結成為一個檔案, 事實上,他並沒有提供壓縮的功能,後來,GNU 計畫中,將整個 tar 與壓縮的功能結合在一起,如此一來提供使用者更方便並且更強大的壓縮與打包功能!
簡單介紹完Linux壓縮種類,接下來講一個 tar 案例,此狀況你可能沒遇過,但是一遇到就會很懊惱!
假設你現在有一個 tar 文件包,裡面的目錄結構如下:
root\L1\L2\L3\L4\L5\我想要取出的目錄.txt
而取出資料的時候 “只要L5裡面的資料",我不要取出是看到 root 目錄後再一層一層撥開它的心,這裡教大家一個小撇步! 雖然是小撇步但是卻是能大幅增加效率!
tar xvf root.tar --strip-components=6
看到的結果如下,是不是覺得超方便的呢?
假設我現在要改成取出 L3 的目錄我們該怎麼做勒?
就是把 strip-components 得值從 6 改成 3 就好啦~ 是不是相當簡單呢?
tar xvf root.tar --strip-components=3
順帶一提,我用的指令中 root.tar 是檔案名稱、–strip-components=3 是要取出的階層,那 xvf 是什麼意思呢?
x: 從檔案中提取文件
v: 詳細列出處理的文件
f: 使用的檔案, 後面要接檔案名稱
當然還有很多,你只要在你的終端機輸入 tar –help,就會有每個字母所代表的意義,讓你運用自如!
參考:
tar - Remove leading directory components on extraction
留言列表