Chinaunix首页 | 论坛 | 博客
  • 博客访问: 171126
  • 博文数量: 65
  • 博客积分: 1400
  • 博客等级: 上尉
  • 技术积分: 720
  • 用 户 组: 普通用户
  • 注册时间: 2008-12-16 08:59
文章分类

全部博文(65)

文章存档

2011年(3)

2010年(3)

2009年(43)

2008年(16)

我的朋友

分类: LINUX

2009-02-13 14:46:43

Linux的環境中,壓縮檔案的副檔名大多是:『*.tar, *.tar.gz, *.tgz, *.gz, *.Z, *.bz2]
*.Z         compress 程式壓縮的檔案;
*.gz        gzip 程式壓縮的檔案;
*.bz2       bzip2 程式壓縮的檔案;
*.tar       tar 程式打包的資料,並沒有壓縮過;
*.tar.gz    tar 程式打包的檔案,其中並且經過 gzip 的壓縮
*.tar.bz2   tar 程式打包的檔案,其中並且經過 bzip2 的壓縮

[root@www ~]# gzip [-cdtv#] 檔名
[root@www ~]# zcat 檔名.gz

選項與參數:
-c  :將壓縮的資料輸出到螢幕上,可透過資料流重導向來處理;
-d  :解壓縮的參數;
-t  :可以用來檢驗一個壓縮檔的一致性~看看檔案有無錯誤;
-v  :可以顯示出原檔案/壓縮檔案的壓縮比等資訊;
-#  :壓縮等級,-1 最快,但是壓縮比最差、-9 最慢,但是壓縮比最好!預設是 -6


範例一:將 /etc/man.config 複製到 /tmp ,並且以 gzip 壓縮


[root@www ~]# bzip2 [-cdkzv#] 檔名
[root@www ~]# bzcat 檔名.bz2
選項與參數:
-c  :將壓縮的過程產生的資料輸出到螢幕上!
-d  :解壓縮的參數
-k  :保留原始檔案,而不會刪除原始的檔案喔!
-z  :壓縮的參數
-v  :可以顯示出原檔案/壓縮檔案的壓縮比等資訊;
-#  :與 gzip 同樣的,都是在計算壓縮比的參數, -9 最佳, -1 最快!

範例一:將剛剛的 /tmp/man.config 以 bzip2 壓縮
[root@www tmp]# bzip2 -z man.config 
# 此時 man.config 會變成 man.config.bz2 !

範例二:將範例一的檔案內容讀出來!
[root@www tmp]# bzcat man.config.bz2
# 此時螢幕上會顯示 man.config.bz2 解壓縮之後的檔案內容!!

範例三:將範例一的檔案解壓縮
[root@www tmp]# bzip2 -d man.config.bz2

範例四:將範例三解開的 man.config 用最佳的壓縮比壓縮,並保留原本的檔案
[root@www tmp]# bzip2 -9 -c man.config > man.config.bz2

tar:

[root@www ~]# tar [-j|-z] [cv] [-f 建立的檔名] filename... <==打包與壓縮
[root@www ~]# tar [-j|-z] [tv] [-f 建立的檔名]             <==察看檔名
[root@www ~]# tar [-j|-z] [xv] [-f 建立的檔名] [-C 目錄]   <==解壓縮
選項與參數:
-c  :建立打包檔案,可搭配 -v 來察看過程中被打包的檔名(filename)
-t  :察看打包檔案的內容含有哪些檔名,重點在察看『檔名』就是了;
-x  :解打包或解壓縮的功能,可以搭配 -C (大寫) 在特定目錄解開
      特別留意的是, -c, -t, -x 不可同時出現在一串指令列中。
-j  :透過 bzip2 的支援進行壓縮/解壓縮:此時檔名最好為 *.tar.bz2
-z  :透過 gzip  的支援進行壓縮/解壓縮:此時檔名最好為 *.tar.gz
-v  :在壓縮/解壓縮的過程中,將正在處理的檔名顯示出來!
-f filename:-f 後面要立刻接要被處理的檔名!建議 -f 單獨寫一個選項囉!
-C 目錄    :這個選項用在解壓縮,若要在特定目錄解壓縮,可以使用這個選項。
(
[root@www ~]# tar -jxv -f /root/etc.tar.bz2 -C /tmp
[root@www ~]# ll /tmp
....(前面省略)....
drwxr-xr-x 105 root root    12288 Nov 11 04:02 etc
....(後面省略)....
) 其他後續練習會使用到的選項介紹: -p :保留備份資料的原本權限與屬性,常用於備份(-c)重要的設定檔 -P :保留絕對路徑,亦即允許備份資料中含有根目錄存在之意; --exclude=FILE:在壓縮的過程中,不要將 FILE 打包!

如果你確定你就是需要備份根目錄到 tar 的檔案中,那可以使用 -P (大寫) 這個選項,請看底下的例子分析:

範例:將檔名中的(根)目錄也備份下來,並察看一下備份檔的內容檔名
[root@www ~]# tar -jpPcv -f /root/etc.and.root.tar.bz2 /etc
....中間過程省略....
[root@www ~]# tar -jtf /root/etc.and.root.tar.bz2
/etc/dbus-1/session.conf
/etc/esd.conf
/etc/crontab
# 這次查閱檔名不含 -v 選項,所以僅有檔名而已!沒有詳細屬性/權限等參數。

建議,還是不要加上 -P 這個選項來備份!

  • 僅解開單一檔案的方法
  • 剛上頭我們解壓縮都是將整個打包檔案的內容全部解開!想像一個情況,如果我只想要解開打包檔案內的其中一個檔案而已, 那該如何做呢?很簡單的,你只要使用 -jtv 找到你要的檔名,然後將該檔名解開即可。 我們用底下的例子來說明一下:

    # 1. 先找到我們要的檔名,假設解開 shadow 檔案好了:
    [root@www ~]# tar -jtv -f /root/etc.tar.bz2 | grep 'shadow'
    -r-------- root/root  1230 2008-09-29 02:21:20 etc/shadow-
    -r-------- root/root   622 2008-09-29 02:21:20 etc/gshadow-
    -r-------- root/root   636 2008-09-29 02:21:25 etc/gshadow
    -r-------- root/root  1257 2008-09-29 02:21:25 etc/shadow  <==這是我們要的!
    # 先搜尋重要的檔名!其中那個 grep 是『擷取』關鍵字的功能!我們會在第三篇說明!
    # 這裡您先有個概念即可!那個管線 | 配合 grep 可以擷取關鍵字的意思!
    
    # 2. 將該檔案解開!語法與實際作法如下:
    [root@www ~]# tar -jxv -f 打包檔.tar.bz2 待解開檔名
    [root@www ~]# tar -jxv -f /root/etc.tar.bz2 etc/shadow
    etc/shadow
    [root@www ~]# ll etc
    total 8
    -r-------- 1 root root 1257 Sep 29 02:21 shadow  <==呦喝!只有一個檔案啦!
    # 很有趣!此時只會解開一個檔案而已!不過,重點是那個檔名!你要找到正確的檔名。
    # 在本例中,你不能寫成 /etc/shadow !因為記錄在 etc.tar.bz2 內的檔名之故!
    

    打包某目錄,但不含該目錄下的某些檔案之作法
    root@www ~]# tar -jcv  -f /root/system.tar.bz2 --exclude=/root/etc* \
    > --exclude=/root/system.tar.bz2  /etc /root  新版tar指令 --exclude=/***/*** 不在是--exclude ***








     

     



    阅读(593) | 评论(0) | 转发(0) |
    给主人留下些什么吧!~~