<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ## 8.2 Linux 系統常見的壓縮指令 在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 計劃](http://www.gnu.org/)所開發出來的壓縮指令,該指令已經取代了 compress 。 后來 GNU 又開發出 bzip2 及 xz 這幾個壓縮比更好的壓縮指令!不過,這些指令通常僅能針對一個文件來壓縮與解壓縮,如此一來, 每次壓縮與解壓縮都要一大堆文件,豈不煩人?此時,那個所謂的“打包軟件, tar”就顯的很重要啦! 這個 tar 可以將很多文件“打包”成為一個文件!甚至是目錄也可以這么玩。不過,單純的 tar 功能僅是“打包”而已,亦即是將很多文件集結成為一個文件, 事實上,他并沒有提供壓縮的功能,后來,[GNU 計劃](http://www.gnu.org/)中,將整個 tar 與壓縮的功能結合在一起,如此一來提供使用者更方便并且更強大的壓縮與打包功能! 下面我們就來談一談這些在 Linux 下面基本的壓縮指令吧! ### 8.2.1 gzip, zcat/zmore/zless/zgrep gzip 可以說是應用度最廣的壓縮指令了!目前 gzip 可以解開 compress, zip 與 gzip 等軟件所壓縮的文件。 至于 gzip 所創建的壓縮文件為 *.gz 的文件名喔!讓我們來看看這個指令的語法吧: ``` [dmtsai@study ~]$ gzip [-cdtv#] 文件名 [dmtsai@study ~]$ zcat 文件名.gz 選項與參數: -c :將壓縮的數據輸出到屏幕上,可通過數據流重導向來處理; -d :解壓縮的參數; -t :可以用來檢驗一個壓縮文件的一致性~看看文件有無錯誤; -v :可以顯示出原文件/壓縮文件的壓縮比等信息; -# :# 為數字的意思,代表壓縮等級,-1 最快,但是壓縮比最差、-9 最慢,但是壓縮比最好!默認是 -6 范例一:找出 /etc 下面 (不含子目錄) 容量最大的文件,并將它復制到 /tmp ,然后以 gzip 壓縮 [dmtsai@study ~]$ ls -ldSr /etc/* # 忘記選項意義?請自行 man 啰! .....(前面省略)..... -rw-r--r--. 1 root root 25213 Jun 10 2014 /etc/dnsmasq.conf -rw-r--r--. 1 root root 69768 May 4 17:55 /etc/ld.so.cache -rw-r--r--. 1 root root 670293 Jun 7 2013 /etc/services [dmtsai@study ~]$ cd /tmp [dmtsai@study tmp]$ cp /etc/services . [dmtsai@study tmp]$ gzip -v services services: 79.7% -- replaced with services.gz [dmtsai@study tmp]$ ll /etc/services /tmp/services* -rw-r--r--. 1 root root 670293 Jun 7 2013 /etc/services -rw-r--r--. 1 dmtsai dmtsai 136088 Jun 30 18:40 /tmp/services.gz ``` 當你使用 gzip 進行壓縮時,在默認的狀態下原本的文件會被壓縮成為 .gz 的文件名,原始文件就不再存在了。 這點與一般習慣使用 windows 做壓縮的朋友所熟悉的情況不同喔!要注意!要注意! 此外,使用 gzip 壓縮的文件在 Windows 系統中,竟然可以被 WinRAR/7zip 這個軟件解壓縮呢!很好用吧!至于其他的用法如下: ``` 范例二:由于 services 是文本文件,請將范例一的壓縮文件的內容讀出來! [dmtsai@study tmp]$ zcat services.gz # 由于 services 這個原本的文件是是文本文件,因此我們可以嘗試使用 zcat/zmore/zless 去讀取! # 此時屏幕上會顯示 servcies.gz 解壓縮之后的原始文件內容! 范例三:將范例一的文件解壓縮 [dmtsai@study tmp]$ gzip -d services.gz # 鳥哥不要使用 gunzip 這個指令,不好背!使用 gzip -d 來進行解壓縮! # 與 gzip 相反, gzip -d 會將原本的 .gz 刪除,回復到原本的 services 文件。 范例四:將范例三解開的 services 用最佳的壓縮比壓縮,并保留原本的文件 [dmtsai@study tmp]$ gzip -9 -c services &gt; services.gz 范例五:由范例四再次創建的 services.gz 中,找出 http 這個關鍵字在哪幾行? [dmtsai@study tmp]$ zgrep -n 'http' services.gz 14:# http://www.iana.org/assignments/port-numbers 89:http 80/tcp www www-http # WorldWideWeb HTTP 90:http 80/udp www www-http # HyperText Transfer Protocol .....(下面省略)..... ``` 其實 gzip 的壓縮已經最優化過了,所以雖然 gzip 提供 1~9 的壓縮等級,不過使用默認的 6 就非常好用了! 因此上述的范例四可以不要加入那個 -9 的選項。范例四的重點在那個 -c 與 &gt; 的使用啰!-c 可以將原本要轉成壓縮文件的數據內容,將它變成文字類型從屏幕輸出, 然后我們可以通過大于 (&gt;) 這個符號,將原本應該由屏幕輸出的數據,轉成輸出到文件而不是屏幕,所以就能夠創建出壓縮擋了。只是文件名也要自己寫, 當然最好還是遵循 gzip 的壓縮文件名要求較佳喔!!更多的 &gt; 這個符號的應用,我們會在 bash 章節再次提及! cat/more/less 可以使用不同的方式來讀取純文本文件,那個 zcat/zmore/zless 則可以對應于 cat/more/less 的方式來讀取純文本文件被壓縮后的壓縮文件! 由于 gzip 這個壓縮指令主要想要用來取代 compress 的,所以不但 compress 的壓縮文件可以使用 gzip 來解開,同時 zcat 這個指令可以同時讀取 compress 與 gzip 的壓縮文件呦! 另外,如果你還想要從文字壓縮文件當中找數據的話,可以通過 egrep 來搜尋關鍵字喔!而不需要將壓縮文件解開才以 grep 進行! 這對查詢備份中的文本文件數據相當有用! ![鳥哥的圖示](https://box.kancloud.cn/2016-05-13_5735736501917.gif "鳥哥的圖示") **Tips** 時至今日,應該也沒有人愛用 compress 這個老老的指令了!因此,這一章已經拿掉了 compress 的介紹~而如果你還有備份數據使用的是 compress 創建出來的 .Z 文件,那也無須擔心,使用 znew 可以將該文件轉成 gzip 的格示喔! ### 8.2.2 bzip2, bzcat/bzmore/bzless/bzgrep 若說 gzip 是為了取代 compress 并提供更好的壓縮比而成立的,那么 bzip2 則是為了取代 gzip 并提供更佳的壓縮比而來的。 bzip2 真是很不錯用的東西~這玩意的壓縮比竟然比 gzip 還要好~至于 bzip2 的用法幾乎與 gzip 相同!看看下面的用法吧! ``` [dmtsai@study ~]$ bzip2 [-cdkzv#] 文件名 [dmtsai@study ~]$ bzcat 文件名.bz2 選項與參數: -c :將壓縮的過程產生的數據輸出到屏幕上! -d :解壓縮的參數 -k :保留原始文件,而不會刪除原始的文件喔! -z :壓縮的參數 (默認值,可以不加) -v :可以顯示出原文件/壓縮文件的壓縮比等信息; -# :與 gzip 同樣的,都是在計算壓縮比的參數, -9 最佳, -1 最快! 范例一:將剛剛 gzip 范例留下來的 /tmp/services 以 bzip2 壓縮 [dmtsai@study tmp]$ bzip2 -v services services: 5.409:1, 1.479 bits/Byte, 81.51% saved, 670293 in, 123932 out. [dmtsai@study tmp]$ ls -l services* -rw-r--r--. 1 dmtsai dmtsai 123932 Jun 30 18:40 services.bz2 -rw-rw-r--. 1 dmtsai dmtsai 135489 Jun 30 18:46 services.gz # 此時 services 會變成 services.bz2 之外,你也可以發現 bzip2 的壓縮比要較 gzip 好喔!! # 壓縮率由 gzip 的 79% 提升到 bzip2 的 81% 哩! 范例二:將范例一的文件內容讀出來! [dmtsai@study tmp]$ bzcat services.bz2 范例三:將范例一的文件解壓縮 [dmtsai@study tmp]$ bzip2 -d services.bz2 范例四:將范例三解開的 services 用最佳的壓縮比壓縮,并保留原本的文件 [dmtsai@study tmp]$ bzip2 -9 -c services &gt; services.bz2 ``` 看上面的范例,你會發現到 bzip2 連選項與參數都跟 gzip 一模一樣!只是擴展名由 .gz 變成 .bz2 而已!其他的用法都大同小異,所以鳥哥就不一一介紹了! 你也可以發現到 bzip2 的壓縮率確實比 gzip 要好些!不過,對于大容量文件來說,bzip2 壓縮時間會花比較久喔!至少比 gzip 要久的多! 這沒辦法~要有更多可用容量,就得要花費相對應的時間!還 OK 啊! ### 8.2.3 xz, xzcat/xzmore/xzless/xzgrep 雖然 bzip2 已經具有很棒的壓縮比,不過顯然某些自由軟件開發者還不滿足,因此后來還推出了 xz 這個壓縮比更高的軟件!這個軟件的用法也跟 gzip/bzip2 幾乎一模一樣! 那我們就來瞧一瞧! ``` [dmtsai@study ~]$ xz [-dtlkc#] 文件名 [dmtsai@study ~]$ xcat 文件名.xz 選項與參數: -d :就是解壓縮啊! -t :測試壓縮文件的完整性,看有沒有錯誤 -l :列出壓縮文件的相關信息 -k :保留原本的文件不刪除~ -c :同樣的,就是將數據由屏幕上輸出的意思! -# :同樣的,也有較佳的壓縮比的意思! 范例一:將剛剛由 bzip2 所遺留下來的 /tmp/services 通過 xz 來壓縮! [dmtsai@study tmp]$ xz -v services services (1/1) 100 % 97.3 KiB / 654.6 KiB = 0.149 [dmtsai@study tmp]$ ls -l services* -rw-rw-r--. 1 dmtsai dmtsai 123932 Jun 30 19:09 services.bz2 -rw-rw-r--. 1 dmtsai dmtsai 135489 Jun 30 18:46 services.gz -rw-r--r--. 1 dmtsai dmtsai 99608 Jun 30 18:40 services.xz # 各位觀眾!看到沒有啊!!容量又進一步下降的更多耶!好棒的壓縮比! 范例二:列出這個壓縮文件的信息,然后讀出這個壓縮文件的內容 [dmtsai@study tmp]$ xz -l services.xz Strms Blocks Compressed Uncompressed Ratio Check Filename 1 1 97.3 KiB 654.6 KiB 0.149 CRC64 services.xz # 竟然可以列出這個文件的壓縮前后的容量,真是太人性化了!這樣觀察就方便多了! [dmtsai@study tmp]$ xzcat services.xz 范例三:將他解壓縮吧! [dmtsai@study tmp]$ xz -d services.xz 范例四:保留原文件的文件名,并且創建壓縮文件! [dmtsai@study tmp]$ xz -k services ``` 雖然 xz 這個壓縮比真的好太多太多了!以鳥哥選擇的這個 services 文件為范例,他可以將 gzip 壓縮比 (壓縮后/壓縮前) 的 21% 更進一步優化到 15% 耶! 差非常非常多!不過, xz 最大的問題是...時間花太久了!如果你曾經使用過 xz 的話,應該會有發現,他的運算時間真的比 gzip 久很多喔! 鳥哥以自己的系統,通過“ time [gzip|bzip2|xz] -c services &gt; services.[gz|bz2|xz] ”去執行運算結果,結果發現這三個指令的執行時間依序是: 0.019s, 0.042s, 0.261s, 看最后一個數字!差了 10 倍的時間耶!所以,如果你并不覺得時間是你的成本考慮,那么使用 xz 會比較好!如果時間是你的重要成本,那么 gzip 恐怕是比較適合的壓縮軟件喔!
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看