linux-1962898_960_720.jpg

(圖片來源)

在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

鳥哥的 Linux 私房菜

 

 

arrow
arrow

    Mayuge 發表在 痞客邦 留言(0) 人氣()