1. 程式人生 > >tar 命令詳解與範例

tar 命令詳解與範例

 轉貼自  http://blog.chinaunix.net/u1/49862/showart_425420.html

tar可以為檔案和目錄建立檔案。利用tar,使用者可以為某一特定檔案建立檔案(備份檔案),也可以在檔案中改變檔案,或者向檔案中加入新的檔案。
tar是需要引數的。

語法:tar [主選項+輔選項] 檔案或者目錄
主選項(執行tar時必須要有下列引數中的至少一個才可執行 ):
-A, --catenate, --concatenate
    將一存檔與已有的存檔合併
-c, --create    
    建立新的存檔
-d, --diff, --compare
    比較存檔與當前檔案的不同之處
--delete                
    從存檔中刪除
-r, --append            
    附加到存檔結尾
-t, --list              
    列出存檔中檔案的目錄
-u, --update            
    僅將較新的檔案附加到存檔中
-x, --extract, --get            
    從存檔展開檔案
特別注意:在上述引數中, c/x/t 僅能存在一個!不可同時存在!因為不可能同時壓縮與解壓縮。


輔選項:
--atime-preserve       
    不改變轉儲檔案的存取時間
-b, --block-size N      
    指定塊大小為 Nx512 位元組(預設時 N=20)
-B, --read-full-blocks  
    讀取時重組塊
-C, --directory DIR     
    轉到指定的目錄,展開.tar檔案到指定的DIR目錄。
--checkpoint            
    讀取存檔時顯示目錄名
-f, --file [HOSTNAME:]F 
    指定存檔或裝置 (預設為 /dev/rmt0)
--force-local           
    強制使用本地存檔,即使存在克隆
-F, --info-script F --new-volume-script F
    在每個磁碟結尾使用指令碼 F (隱含 -M)
-G, --incremental       
    建立老 GNU 格式的備份
-g, --listed-incremental F
    建立新 GNU 格式的備份
-h, --dereference       
    不轉儲動態連結,轉儲動態連結指向的檔案。
-i, --ignore-zeros      
    忽略存檔中的 0 位元組塊(通常意味著檔案結束)
--ignore-failed-read    
    在不可讀檔案中作 0 標記後再退出
-k, --keep-old-files    
    儲存現有檔案;從存檔中展開時不進行覆蓋
-K, --starting-file F   
    從存檔檔案 F 開始
-l, --one-file-system   
    在本地檔案系統中建立存檔
-L, --tape-length N     
    在寫入 N*1024 個位元組後暫停,等待更換磁碟
-m, --modification-time 
    當從一個檔案中恢復檔案時,不使用新的時間標籤
-M, --multi-volume      
    建立多卷存檔,以便在幾個磁碟中存放
-N, --after-date DATE, --newer DATE     
    僅儲存時間較新的檔案
-o, --old-archive, --portability        
    以 V7 格式存檔,不用 ANSI 格式
-O, --to-stdout         
    將檔案展開到標準輸出
-p, --same-permissions, --preserve-permissions
    展開所有保護資訊
-P, --absolute-paths    
    不要從檔名中去除 '/'
--preserve           
    與 -p -s 相似
-R, --record-number     
    顯示資訊時同時顯示存檔中的記錄數
--remove-files          
    建立存檔後刪除原始檔
--same-owner
    展開以後使所有檔案屬於同一所有者
-S, --sparse
    高效處理
-T, --files-from F
    從檔案中得到要展開或要建立的檔名
--null
    讀取空結束的檔名,使 -C 失效
--totals
    顯示用 --create 引數寫入的總位元組數
-v, --verbose
    詳細顯示處理的檔案
-V, --label NAME
    為存檔指定卷標
--version
    顯示 tar 程式的版本號
-w, --interactive, --confirmation
    每個操作都要求確認
-W, --verify
    寫入存檔後進行校驗
--exclude FILE
    不把指定檔案包含在內
-X, --exclude-from FILE
    從指定檔案中讀入不想包含的檔案的列表
-j, --bzip2, --bunzip2
    用 bzip2 對存檔壓縮或解壓
-Z, --compress, --uncompress
    用 compress 對存檔壓縮或解壓
-z, --gzip, --ungzip
    用 gzip 對存檔壓縮或解壓
--use-compress-program PROG
    用 PROG 對存檔壓縮或解壓 ( PROG 需能接受 -d 引數)
--block-compress
    為便於磁碟儲存,按塊記錄存檔
-[0-7][lmh]
    指定驅動器和密度[高中低]


範例(以下範例均以root使用者執行):
範例一:將整個 /home 目錄下的檔案全部打包成為 /usr/backup/home.tar
# tar -cvf /usr/backup/home.tar   /home          <--僅打包,不壓縮
# tar -zcvf /usr/backup/home.tar.gz  /home    <--打包後,以 gzip 壓縮
# tar -jcvf /usr/backup/home.tar.bz2  /home   <--打包後,以 bzip2 壓縮
特別注意:在引數 f 之後的檔案檔名是自己取的,習慣上都用 .tar 來作為辨識。

範例二:查閱上述 /usr/backup/home.tar.gz 檔案內有哪些檔案?
# tar -ztvf /usr/backup/home.tar.gz
   由於我們使用 gzip 壓縮,所以要查閱該 tar file 內的檔案時,就得要加上 z 這個引數了!

範例三:將 /usr/backup/home.tar.gz 檔案解壓縮在 /usr/local/src 底下
方法1:
# cd /usr/local/src
# tar -zxvf /usr/backup/home.tar.gz
方法2:
#tar -zxvf /usr/backup/home.tar.gz  -C  /usr/local/src/

範例四:在 /tmp 底下,我只想要將 /usr/backup/home.tar.gz 內的 home/root 解開而已
# cd /tmp
# tar -zxvf /usr/backup/home.tar.gz   home/root

範例五:將 /home/ 內的所有檔案備份下來,並且儲存其許可權!
# tar -zxvpf /usr/backup/home.tar.gz  /home
  注意: 這個 -p 的屬性是很重要的,尤其是當要保留原本檔案的屬性時!
           在 f 之後要立即接檔案名!不要再加引數!如上例 tar -zxvfp /usr/backup/home.tar.gz就是錯誤的寫法。

範例六:在 /home 當中,比 2007/06/01 新的檔案才備份
# tar -N "2007/06/01" -zcvf home.tar.gz  /home

範例七:我要備份 /home, /etc ,但不要 /home/abc
# tar --exclude /home/abc -zcvf myfile.tar.gz /home/* /etc

範例八:將 /home/ 打包後直接解開在 /tmp 底下,而不產生檔案!
# cd /tmp
# tar -cvf - /home | tar -xvf -
   要注意的地方在於輸出檔變成 - ,而輸入檔也變成 - 。

範例九:在打包/home之後又新建一個使用者bcd,現也要將其打包加入/usr/backup/home.tar.gz
#tar -zcvrf /usr/backup/home.tar.gz  /home/bcd

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
轉貼自
http://www.5460.net/gy5460/jsp/article/dispArt.jsp?dNum=502090


tar命令

tar 檔案是幾個檔案和(或)目錄在一個檔案中的集合。這是建立備份和歸檔的佳徑。

tar 使用的選項有:


-c — 建立一個新歸檔。


-f — 當與 -c 選項一起使用時,建立的 tar 檔案使用該選項指定的檔名;當與


-x 選項

一起使用時,則解除該選項指定的歸檔。


-t — 顯示包括在 tar 檔案中的檔案列表。


-v — 顯示檔案的歸檔進度。


-x — 從歸檔中抽取檔案。


-z — 使用 gzip 來壓縮 tar 檔案。


-j — 使用 bzip2 來壓縮 tar 檔案。


要建立一個 tar 檔案,鍵入:


tar -cvf filename.tar directory/file


可以使用 tar 命令同時處理多個檔案和目錄,方法是將它們逐一列出,並用空格間隔:


tar -cvf filename.tar /home/mine/work /home/mine/school


上面的命令把 /home/mine 目錄下的 work 和 school 子目錄內的所有檔案都放入當前目錄中一個叫做 filename.tar 的新檔案裡。


要列出 tar 檔案的內容,鍵入:

tar -tvf filename.tar


要抽取 tar 檔案的內容,鍵入

tar -xvf filename.tar


這 個命令不會刪除 tar 檔案,但是它會把被解除歸檔的內容複製到當前的工作目錄下,並保留歸檔檔案所使用的任何目錄結構。譬如,如果這個 tar 檔案中包含一個叫做bar.txt 的檔案,而這個檔案包含在 foo/ 目錄中,那麼,抽取歸檔檔案將會導致在你當前的工作目錄中建立foo/ 目錄,該目錄中包含 bar.txt 檔案


tar 預設不壓縮檔案。


要建立一個使用 tar 和 bzip 來歸檔壓縮的檔案,使用 -j 選項:

tar -cjvf filename.tbz file


以上命令建立了一個歸檔檔案,然後將其壓縮為 filename.tbz 檔案。如果你使用


bunzip2 命令為 filename.tbz 檔案解壓,filename.tbz 檔案會被刪除,繼之以filename.tar 檔案。


你還可以用一個命令來擴充套件並解除歸檔 bzip tar 檔案:

tar -xjvf filename.tbz


要建立一個用 tar 和 gzip 歸檔並壓縮的




TAR命令與Gzip命令




Tar可以為檔案和目錄建立檔案。利用tar,使用者可以為某一特定檔案打包(備份檔案),也可以在檔案中改變檔案,或者向檔案中加入新的檔案。

tar最初被用來在磁帶上打包,現在,使用者可以在任何裝置上打包,如軟盤。

利用tar命令,可以把一大堆的檔案和目錄全部打包成一個檔案.


語法:tar [主選項+輔選項] 檔案或者目錄


使用該命令時,主選項是必須要有的,它告訴tar要做什麼事情,輔選項是輔助使用的,可以選用。


主選項:


c 建立新的檔案檔案。如果使用者想備份一個目錄或是一些檔案,就要選擇這個選項。


r 把要存檔的檔案追加到檔案檔案的末尾。例如使用者已經作好備份檔案,又發現還有一個目錄或是一些檔案忘記備份了,這時可以使用該選項,將忘記的目錄或檔案追加到備份檔案中。


t 列出檔案檔案的內容,檢視已經備份了哪些檔案。


u 更新檔案。就是說,用新增的檔案取代原備份檔案,如果在備份檔案中找不到要更新的檔案,則把它追加到備份檔案的最後。


x 從檔案檔案中釋放檔案。


輔助選項:


b 該選項是為磁帶機設定的。其後跟一數字,用來說明區塊的大小,系統預設值為20


(20*512 bytes)。


f 使用檔案檔案或裝置,這個選項通常是必選的。


k 儲存已經存在的檔案。例如我們把某個檔案還原,在還原的過程中,遇到相同的檔案,不會進行覆蓋。


m 在還原檔案時,把所有檔案的修改時間設定為現在。


M 建立多卷的檔案檔案,以便在幾個磁碟中存放。


v 詳細報告tar處理的檔案資訊。如無此選項,tar不報告檔案資訊。


w 每一步都要求確認。




例1:把/home目錄下包括它的子目錄全部做備份檔案,備份檔名為usr.tar。


$ tar cvf usr.tar /home


例2:把usr.tar這個備份檔案還原


$ tar xvf usr.tar


例3:檢視usr.tar備份檔案的內容,並以分屏方式顯示在顯示器上。


$ tar tvf usr.tar | more


要將檔案備份到一個特定的裝置,只需把裝置名作為備份檔名。


例4:使用者在/dev/fd0裝置的軟盤中建立一個備份檔案,並將/home 目錄中所有的檔案都拷貝到備份檔案中。


$ tar cf /dev/fd0 /home


要恢復裝置磁碟中的檔案,可使用xf選項:


$ tar xf /dev/fd0


如果使用者備份的檔案大小超過裝置可用的存貯空間,如軟盤,您可以建立一個多卷的tar備份檔案。

M選項指示tar命令提示您使用一個新的存貯裝置,當使用M選項向一個軟碟機進行存檔時,tar命令在一張軟盤已滿的時候會提醒您再放入一張新的軟盤。

這樣您就可以把tar檔案存入幾張磁碟中。


$ tar cMf /dev/fd0 /home


要恢復幾張盤中的檔案,只要將第一張放入軟碟機,然後輸入有x和M選項的tar命令。在必要時您會被提醒放入另外一張軟盤。


$ tar xMf /dev/fd0


磁帶操作:

使用tar命令複製檔案或者目錄樹到單個磁帶。優點:在UNIX系統中都可用。缺點:不知道檔案系統的邊界,全路徑名長不能超過255個字元, 不能複製空目錄或者裝置檔案這樣的特殊檔案,不能用來建立多個磁帶卷。


1.複製檔案到磁帶

1)切換到包含有需要複製檔案的目錄

2)在磁帶驅動器中插入可以寫入的磁帶

3)輸入 tar cvf /dev/rmt/0m filenme filename ...

其中, c (複製)選項複製指定的檔案,v(詳細)選項顯示覆制檔案的資訊,f(檔案)選項後面跟隨的是tar檔案寫入的磁帶裝置名。指定的檔名複製到磁帶,覆蓋磁帶上任何已存在的檔案。

注:使用c選項複製檔案到磁帶將破壞磁帶上已有的任何檔案。如果要保留這些檔案,用r選項。可以使用萬用字元(? *)

4)從驅動器中取出磁帶,將檔名寫在磁帶的標籤上。


2.列出磁帶上的檔案

1)插入磁帶到磁帶驅動器。

2)輸入 tar tvf /dev/rmt/0m

其中, t(列表)選項列出指定的檔案,vv(詳細)選項顯示檔案的全部資訊,f(檔案)選項後面跟隨的是tar檔案寫入的磁帶裝置名。


3.新增檔案到磁帶

1)切換到包含有需要複製檔案的目錄。

2)在磁帶驅動器中插入可以寫入的磁帶

3)輸入 tar rvf /dev/rmt/0m filename filename...

指定的檔案新增到磁帶上已有檔案的後面。

4)從驅動器中取出磁帶,將檔名寫在磁帶的標籤上。

注:如果使用n(不迴繞)選項做為磁帶裝置名的一部分,可以自制多個tar檔案集到磁帶。輸入 tar cvf /dev/rmt/0mn filenae ,當該檔案自制完畢時磁帶不迴繞,下一次使用磁帶時,檔案在當前檔案集的結尾寫入。


4.從磁帶獲取檔案集的結尾寫入

1)切換到包含有需要複製檔案的目錄。

2)在磁帶驅動器中插入磁帶。

3)輸入 tar xvf /dev/rmt/0m

指定驅動器中磁帶上的所有檔案複製到當前目錄中。

從磁帶中獲取單個檔案,輸入 tar xvf /dev/rmt/0m filename1 filename2 ...

從磁帶中展開指定的檔名,放入當前工作目錄。


5.從磁帶上遞迴讀取目錄和子目錄

1)更換目錄到要自制檔案的父目錄

tar xvf /dev/rmt/0m filename

將恢復filename到當前目錄。

2)輸入 tar xvf /dev/rmt/0m directory-name ,從磁帶中遞迴複製該目錄和它的所有子目錄。


gzip命令


減少檔案大小有兩個明顯的好處:

一是可以減少儲存空間,二是通過網路傳輸檔案時,可以減少傳輸的時間。gzip是在Unix系統中經常使用的一個對檔案進行壓縮和解壓縮的命令,既方便又好用。


語法:gzip [選項] 壓縮(解壓縮)的檔名


各選項的含義:


-c 將輸出寫到標準輸出上,並保留原有檔案。


-d 將壓縮檔案解壓。


-l 對每個壓縮檔案,顯示下列欄位:


壓縮檔案的大小


未壓縮檔案的大小


壓縮比


未壓縮檔案的名字


-r 遞迴式地查詢指定目錄並壓縮其中的所有檔案或者是解壓縮。


-t 測試,檢查壓縮檔案是否完整。


-v 對每一個壓縮和解壓的檔案,顯示檔名和壓縮比。


-num 用指定的數字num調整壓縮的速度,-1或--fast表示最快壓縮方法(低壓縮比),-9或--best表示最慢壓縮方法(高壓縮比)。系統預設值為6。


假設一個目錄/home下有檔案mm.txt、sort.txt、xx.com。


例1:把/home目錄下的每個檔案壓縮成.gz檔案。


$ cd /home


$ gzip *


$ ls


m.txt.gz sort.txt.gz xx.com.gz


例2:解壓縮檔案file.gz


$ gzip -dv file.gz


例3:詳細顯示例1中每個壓縮的檔案的資訊,並不解壓。


$ gzip -l *


compressed uncompr. ratio uncompressed_name


277 445 43.1% mm.txt


278 445 43.1% sort.txt


277 445 43.1% xx.com


$ ls


mm.txt.gz sort.txt.gz xx.com.gz


例4:壓縮一個tar備份檔案,如usr.tar,此時壓縮檔案的副檔名為.tar.gz


$ gzip usr.tar


$ ls


usr.tar.gz