tar [-cxtzjvfpPN] 檔案與目錄 ....
【參數】:
-c :建立一個壓縮檔案的參數指令(create 的意思);
-x :解開一個壓縮檔案的參數指令!
-t :檢視 tarfile 裡面的檔案!
-r:向壓縮歸檔檔案末尾追加檔案
-u:更新原壓縮包中的檔案
特别注意,在參數的下達中, c/x/t 僅能存在一個!不可同時存在! 這五個是獨立的指令,壓縮解壓都要用到其中一個,可以和别的指令連用但隻能用其中一個。下面的參數是根據需要在壓縮或解壓檔案時可選的:
-z :是否同時具有 gzip 的屬性,亦即是否需要用 gzip 壓縮。
-j :是否同時具有 bzip2 的屬性,亦即是否需要用 bzip2 壓縮。
-Z: 是否同時具有 compress的屬性,亦即是否需要用 compress壓縮。
-v :壓縮的過程中顯示檔案!這個常用,但不建議用在背景執行過程!
-O:将檔案解開到标準輸出
-p :使用原檔案的原來屬性(屬性不會依據使用者而變),恢複字段到它們的原始方式,忽略現有的使用者權限屏蔽位(umask)。 加了-p之後,tar進行解壓後,生成的檔案的權限,是直接取自tar包裡面檔案的權限(不會再使用該使用者的umask值進行運算),那麼不加-p參數,将還要再減去umask的值(位運算的減),但是如果使用root使用者進行操作,加不加-p參數都一樣。
-P :不剝離起始路徑的“/”目錄,可以使用絕對路徑來壓縮!一般情況下,待壓縮的目錄如果是一個絕對路徑,壓縮後會将根目錄符号/去掉,這樣,在解壓時,得到的目錄結構是以目前目錄為基礎目錄的,如果在壓縮時加上-P,則解壓時還是以根目錄為基礎目錄。
-N :比後面接的日期(yyyy/mm/dd)還要新的才會被打包進建立的檔案中!
-C:解壓到某個目錄
--exclude FILE:在壓縮的過程中,不要将 FILE 打包!
下面的參數-f是必須的:
-f: 使用檔案名字,切記,這個參數是最後一個參數,後面隻能接檔案名。例如使用『 tar -zcvfP tfile sfile』就是錯誤的寫法,要寫成 『 tar -zcvPf tfile sfile』才對!
【範例】:
範例一:将整個 /etc 目錄下的檔案全部打包成為 /tmp/etc.tar
[[email protected] ~]# tar -cvf /tmp/etc.tar /etc #僅打包,不壓縮!
[[email protected] ~]# tar -zcvf /tmp/etc.tar.gz /etc #打包後,以 gzip 壓縮
[[email protected] ~]# tar -jcvf /tmp/etc.tar.bz2 /etc #打包後,以 bzip2 壓縮
[[email protected] ~]# tar -jcvf /tmp/etc.tar.bz2 /etc#打包後,以 compress壓縮
# 特别注意,在參數 f 之後的檔案檔名是自己取的,我們習慣上都用 .tar 來作為辨識。
# 如果加 z 參數,則以 .tar.gz 或 .tgz 來代表 gzip 壓縮過的 tar包 ~
# 如果加 j 參數,則以 .tar.bz2 來作為附檔名~
# 如果加 Z 參數,則以 .tar.Z 或 .tgz 來代表 gzip 壓縮過的 tar包
範例二:查閱上述 /tmp/etc.tar.gz 檔案内有哪些檔案:
[[email protected] ~]# tar -ztvf /tmp/etc.tar.gz
# 由於我們使用 gzip 壓縮,是以要查閱該 tar包内的檔案時,就得要加上 z 這個參數了!這很重要的!
範例三:将 /tmp/etc.tar.gz 檔案解壓縮在 /usr/local/src 底下
[[email protected] ~]# cd /usr/local/src
[[email protected] src]# tar -zxvf /tmp/etc.tar.gz
[[email protected] src]# tar -zxvf /tmp/etc.tar.gz -C /usr/local#将其解壓到/usr/local目錄下
# 在預設的情況下,我們可以将壓縮檔在任何地方解開的!以這個範例來說,
# 我先将工作目錄變換到 /usr/local/src 底下,并且解開 /tmp/etc.tar.gz ,
# 則解開的目錄會在 /usr/local/src/etc 呢!另外,如果您進入 /usr/local/src/etc
# 則會發現,該目錄下的檔案屬性與 /etc/ 可能會有所不同喔!
範例四:在 /tmp 底下,我隻想要将 /tmp/etc.tar.gz 内的 etc/passwd 解開而已
[[email protected] ~]# cd /tmp
[[email protected] tmp]# tar -zxvf /tmp/etc.tar.gz etc/passwd
# 我可以透過 tar -ztvf 來查閱 tarfile 内的檔案名稱,如果單隻要一個檔案,
# 就可以透過這個方式來下達!注意到! etc.tar.gz 内的根目錄 / 是被拿掉了!
範例五:将 /etc/ 内的所有檔案備份下來,并且儲存其權限!
[[email protected] ~]# tar -zxvpf /tmp/etc.tar.gz /etc
# 這個 -p 的屬性是很重要的,尤其是當您要保留原本檔案的屬性時!
#解壓時也要使用-p才能儲存其權限。
範例六:在 /home 當中,比 2005/06/01 新的檔案才備份
[[email protected] ~]# tar -N "2005/06/01" -zcvf home.tar.gz /home
範例七:我要備份 /home, /etc ,但不要 /home/dmtsai
[[email protected] ~]# tar --exclude=/home/dmtsai -zcvf myfile.tar.gz /home/* /etc
注意:這裡待備份的目錄不能直接使用*,否則不會排除對應的檔案或目錄,該示例中就不能進入/home目錄下執行上述指令時直接用tar --exclude=/home/dmtsai -zcvf myfile.tar.gz * /etc,這樣是無法排除/home/dmtsai目錄的。但是可以像上面示例中的指定某個目錄下的所有檔案/home/*。
所有檔案或目錄盡量使用全路徑來表示,直接使用相對目錄也可以,且相對目前目錄可以不加./ 。
範例八:将 /etc/ 打包後直接解開在 /tmp 底下,而不産生檔案!
[[email protected] ~]# cd /tmp
[[email protected] tmp]# tar -cvf - /etc | tar -xvf -
# 這個動作有點像是 cp -r /etc /tmp 啦~依舊是有其有用途的!
# 要注意的地方在於輸出檔變成 - 而輸入檔也變成 - ,又有一個 | 存在~
# 這分别代表 standard output, standard input 與管線指令啦!
# 這部分我們會在 Bash shell 時,再次提到這個指令跟大家再解釋啰!
範例九:壓縮時的-P屬性:
[roo[email protected] huangmr]# tar -zcvf test.tar.gz /home/huangmr/test1/
tar: Removing leading `/' from member names
/home/huangmr/test1/
/home/huangmr/test1/b.txt
/home/huangmr/test1/a.txt
[[email protected] huangmr]# tar -zcvPf testP.tar.gz /home/huangmr/test1/
/home/huangmr/test1/
/home/huangmr/test1/b.txt
/home/huangmr/test1/a.txt
[[email protected] huangmr]# tar -ztvf test.tar.gz
drwxr-xr-x huangmr/huangmr 0 2015-06-02 10:05 home/huangmr/test1/
-rw-r--r-- huangmr/huangmr 5 2015-06-02 10:11 home/huangmr/test1/b.txt
-rw-r--r-- huangmr/huangmr 5 2015-06-02 10:11 home/huangmr/test1/a.txt
[[email protected] huangmr]# tar -ztvf testP.tar.gz
tar: Removing leading `/' from member names
drwxr-xr-x huangmr/huangmr 0 2015-06-02 10:05 /home/huangmr/test1/
-rw-r--r-- huangmr/huangmr 5 2015-06-02 10:11 /home/huangmr/test1/b.txt
-rw-r--r-- huangmr/huangmr 5 2015-06-02 10:11 /home/huangmr/test1/a.txt
指令tar -zcvf test.tar.gz /home/huangmr/test1/可以将/home/huangmr/test1/目錄打包到目前目錄下的test1.tar.gz中,解壓時無論使用tar -zxvPf還是tar -zxvf,都是在解壓所在目錄下生成一個home/huangmr/test1目錄;而如果使用 tar -zcvPf test.tar.gz /home/huangmr/test1/進行壓縮,解壓時如果也使用tar -zxvPf,則如論是在哪個目錄,都将生成/home/huangmr/test1/目錄(增量修改,不會覆寫),而不是在解壓工作目錄下生成home/huangmr/test1/目錄,如果解壓時使用tar-zxvf,無論壓縮時是否加了-P,都是在解壓所在目錄下生成一個home/huangmr/test1目錄。
壓縮
- tar –cvf jpg.tar *.jpg 将目錄裡所有jpg檔案打包成tar.jpg
- tar –czf jpg.tar.gz *.jpg 将目錄裡所有jpg檔案打包成jpg.tar後,并且将其用gzip壓縮,生成一個gzip壓縮過的包,命名為jpg.tar.gz
- tar –cjf jpg.tar.bz2 *.jpg 将目錄裡所有jpg檔案打包成jpg.tar後,并且将其用bzip2壓縮,生成一個bzip2壓縮過的包,命名為jpg.tar.bz2
- tar –cZf jpg.tar.Z *.jpg 将目錄裡所有jpg檔案打包成jpg.tar後,并且将其用compress壓縮,生成一個umcompress壓縮過的包,命名為jpg.tar.Z
- rar a jpg.rar *.jpg rar格式的壓縮,需要先下載下傳rar for linux
- zip jpg.zip *.jpg zip格式的壓縮,需要先下載下傳zip for linux
解壓
- tar –xvf file.tar 解壓 tar包
- tar -xzvf file.tar.gz 解壓tar.gz
- tar -xjvf file.tar.bz2 解壓 tar.bz2
- tar –xZvf file.tar.Z 解壓tar.Z
- unrar e file.rar 解壓rar
- unzip file.zip 解壓zip
總結
- *.tar 用 tar -xvf 解壓
- *.gz 用 gzip -d或者gunzip 解壓
- *.tar.gz和*.tgz 用 tar -zxvf 解壓
- *.bz2 用 bzip2 -d或者用bunzip2 解壓
- *.tar.bz2用tar –xjf 解壓
- *.Z 用 uncompress 解壓
- *.tar.Z 用tar -xZf 解壓
- *.rar 用 unrar e解壓
- *.zip 用 unzip 解壓
---------------------------------------------------其他解釋-----------------------------------------------------------
tar 指令
用途
處理歸檔。
文法
tar { -c | -r | -t | -u | -x } [ -b Blocks ] [ -B ] [ -d ] [ -F ] [ -h ] [ -i ] [ -L InputList ] [ -l ] [ -m ] [ -N Blocks ][ -o ] [ -p ] [ -s ] [ -v ] [ -w ] [ -Number ] [ -f Archive ] [ -S Blocksb | -S Feet | -S [email protected] ] [ File | Directory | -C Directory ] ...
描述
注意:由于在 tar 指令中對頭塊空間的限制,當恢複到某些系統時,大于 65,535 的使用者号(UID)群組辨別号(GID)将毀壞。大小限制隻影響所有權和許可權而不對資料造成損害。所有權的毀壞發生在下列系統中:
* 不使用 uname 和 gname 字段來檢查所有權的系統。
* 與歸檔系統沒有相同的使用者群組辨別的系統。
注:
1. ustar 頭格式允許檔案大到 8 GB。是以,tar 指令支援歸檔最大 8 GB 的檔案。
2. tar 不保留任何稀疏配置設定的檔案的稀疏屬性。任何在恢複前原是稀疏的檔案,将按檔案大小在檔案系統内配置設定其所有空間。
tar 指令通過将檔案寫入歸檔存儲媒體或将檔案從媒體中取回,來處理歸檔。由 tar 指令使用的檔案通過 File 參數來表示。如果 File 參數引用一個目錄,則引用該目錄并遞歸引用該目錄下全部的檔案和目錄。
tar 指令在預設裝置(通常是錄音帶)上尋找歸檔,除非使用 -f Archive 标志指定另一個裝置。當為美國錄音帶歸檔程式(USTAR)格式指定大于 100 個字元的路徑名稱時,請記住路徑名稱是由一個字首緩沖區、一個 /(斜杠)和一個名稱緩沖區組成的。
字首緩沖區最大可以有 155 位元組,而名稱緩沖區最大可以容納 100 位元組。如果路徑名稱不能用斜杠分割為這兩部分,則它不能被歸檔。這個限制是考慮到 tar 歸檔頭的結構,而且必須為了符合标準和向下相容而維護該限制。另外,硬連結或符号連結(“連結名稱”)的目标長度不能超出 100 位元組。
當寫到歸檔時,tar 指令使用一個臨時檔案(/tmp/tar* 檔案),并在記憶體中維護一個包含多連結檔案的表。如果 tar 指令不能建立臨時檔案,或者沒有足夠的可用記憶體來放置連結表,您會接收到錯誤消息。
tar 指令有兩組标志:必需标志和可選标志。必需标志控制 tar 指令的操作,包括 -c、-r、-t、-u 和 -x 标志。要執行 tar 指令至少要選擇一個必需标志。選擇了必需标志後,您可以選擇一個可選标志,但它們對控制 tar 指令都不是必要的。
注:
1. 當儲存設備是一個普通檔案或一個塊特殊檔案時,-u 和 -r 标志可倒退。然而,原始錄音帶裝置不支援倒退。是以當儲存設備是原始錄音帶時,-u 和 -r 标志進行倒帶、打開錄音帶并再次讀取錄音帶。
2. 在塊錄音帶上記錄的長度是一塊,但它們通常比在原始錄音帶上的密度的一半還少。是以,盡管按塊記錄原始錄音帶必須被讀取兩遍,但錄音帶運動總量比從塊式錄音帶讀取一遍單塊記錄還少。
3. 流式錄音帶裝置的結構不支援在錄音帶最後增加資訊。是以,當儲存設備是流式錄音帶時,-u 和 -r 标志不是有效的選項。試圖使用這些标志将導緻下列錯誤消息:
tar: 更新和替換選項對流式錄音帶機無效。
4. 錄音帶錯誤無法恢複。
5. 可以通過更改預設塊大小改善 tar 指令在 IBM 9348 錄音帶機 12 型上的性能。要更改塊大小,請在指令行輸入下列指令:
chdev -1 <device_name> -a block_size=32k
要了解更多關于使用錄音帶裝置的資訊,請參閱 rmt 特殊檔案。
标志
tar 指令的标志有兩組,必需的和可選的。必須提供至少一個必需标志來控制 tar 指令。
必需标志
-c 建立新的歸檔,并将由一個或多個 File 參數所指定的檔案寫入歸檔的開頭。
-r 将由一個或多個 File 參數所指定的檔案寫入歸檔的最後。這個标志不是對任何錄音帶裝置都有效,因為有些裝置不支援在錄音帶的最後添加資訊。
-t 按照檔案在歸檔中的順序列出檔案。檔案可能會多次列出。
-u 隻有當檔案不在歸檔中,或寫入歸檔後被修改過,才将這些檔案(由一個或多個 File 參數所指定)寫入歸檔的最後。-u 标志不是對任何錄音帶裝置都有效,因為有些錄音帶裝置不支援在錄音帶的最後添加資訊。
-x 從歸檔中抽取一個或多個 File 參數指定的檔案。如果 File 參數是指一個目錄, tar 指令遞歸地從歸檔中抽取那個目錄。如果您未指定 File 參數,tar 指令從歸檔中抽取所有的檔案。如果歸檔中包含同一檔案的多個副本,最後抽取的副本覆寫所有以前抽取的副本。如果被抽取的檔案在系統中不存在,則建立該檔案。如果您有适當的許可權,tar 指令用與錄音帶上的相同所有者群組辨別恢複所有檔案和目錄。如果您沒有适當的許可權,将以您的所有者辨別群組辨別恢複檔案和目錄。隻能請求檔案最後出現的版本。
可選标志
-B 輸入分塊和輸出分塊強制為每個記錄 20 塊。使用這個選項,tar 指令可在那些可能未維護分塊的通信信道間執行。
-b Blocks 指定每個記錄的 512 位元組塊數量。預設值和最大值都是 20,這是對錄音帶記錄适當的數目。由于記錄間隙大小的原因,用大的分塊因子寫的錄音帶可以比每個記錄隻有一塊的錄音帶儲存更多的資料。
當讀取錄音帶時,塊大小自動确定(-x 或 -t 功能标志)。歸檔被 -u 和 -r 功能更新時,使用現有的記錄大小。隻有當使用 -c 标志建立新的歸檔時,tar 指令才使用 Blocks 參數指定的值寫入歸檔。
當用 -f 标志輸出到普通檔案時,您可以使用與磁盤塊大小相比對的分塊因子來節省磁盤空間(例如,對于 2048 位元組的磁盤塊,使用 -b4 标志)。
-C Directory 使 tar 指令向由 Directory 變量指定的目錄執行 chdir 子例程。使用 -C 标志允許歸檔不用相近公共父目錄來關聯的多個目錄,使用簡短的相對路徑名稱。例如,要從 /usr/include 和 /etc 目錄中歸檔檔案,可以使用下列指令:
tar c -C /usr/include File1 File2 -C /etc File3 File4
-C Directory 标志必須在所有其它标志後出現,也可以在給定的檔案名清單中出現。
-d 為塊檔案、特殊字元檔案以及先進先出(FIFO)管道程序建立單獨條目。通常,tar 指令不會歸檔這些特殊檔案。當使用 -d 标志寫入歸檔時,tar 指令使歸檔可以用 -x 标志恢複空目錄、特殊檔案以及先進先出(FIFO)管道程序。
注:
雖然任何人可以歸檔特殊檔案,但隻有擁有 root 使用者權限的使用者可以從歸檔中抽取特殊檔案。
-F 在歸檔前檢查檔案類型。源代碼控制系統(SCCS),修訂控制系統(RCS),名為 core、errs 和 a.out 的檔案,以及以 .o(點 o)結束的檔案不歸檔。
-f Archive 使用 Archive 變量表示要讀或寫的歸檔。當未指定這個标志,tar 指令使用一個針對特定系統的預設檔案名(格式為 /dev/rmt0)。如果指定的 Archive 變量是 -(減号),tar 指令寫入标準輸出或從标準輸入中讀取。如果寫入标準輸出,您必須使用 -c 标志。
-h 強制 tar 指令監視符号連結,就好像它們是正常檔案或目錄。通常,tar 指令不監視符号連結。
-i 忽略頭校驗和的錯誤。tar 指令在歸檔中寫入一個檔案頭,它包含每個檔案的校驗和。如果未指定這個标志,系統通過重新計算校驗和來驗證頭塊的内容,并在發生不比對時,停止并報目錄校驗和錯誤。如果指定這個标志,tar 指令将記錄錯誤,然後向前掃描直到查找到一個有效的頭塊。這就允許從多卷歸檔的後面的卷中恢複檔案,而不需讀取前面的卷。
-L InputList :-L 選項的 Inputlist 參數應該總是一個檔案名稱,該名稱列出需要歸檔的檔案和目錄。
同樣地,InputList 參數可以是一個儲存某檔案名稱的變量,該檔案列出要歸檔的檔案和目錄。
這個選項幫助将列在 InputList 參數中的檔案和目錄寫入歸檔。 InputList 參數中的目錄不被遞歸。對于包含于 InputList 參數中的目錄,tar 指令隻将目錄寫入歸檔,而不将目錄中的檔案和子目錄寫入歸檔。
如果額外的檔案和目錄在指令行中跟在 InputList 參數後,InputList 參數的内容歸檔在這些檔案和目錄之後。這些額外的檔案或目錄按它們的預設行為歸檔,即将它們遞歸地歸檔。
-l 對于每個帶有連結數大于 1 的檔案,而其相應的連結卻未歸檔,寫錯誤消息到标準輸出。例如,如果 file1 和 file2 是用硬連結連結在一起,而隻有 file1 存放在歸檔中,則 -l 标志将發出錯誤消息。如果未指定 -l 标志,将不顯示錯誤消息。
-m 使用抽取時間作為修改時間。預設是保留檔案的修改時間。
-N Blocks 當 tar 指令處理流式錄音帶歸檔時,允許它使用很大的塊的簇。然而請注意,在輸入時,如果用這個标志建立了非常長的塊大小, tar 指令将不能自動确定錄音帶的塊大小。沒有 -N Blocks 标志時,tar 指令可以自動确定的最大塊大小為 20 塊。
-o 提供與舊版本(非 AIX)tar 指令的向下相容。當使用這個标志進行讀取時,被抽取的檔案使用運作程式的使用者的使用者辨別群組辨別(UID 和 GID),而不是歸檔中的使用者辨別群組辨別。這是對于普通使用者的預設行為。
-p 恢複字段到它們的原始方式,忽略現有的使用者權限屏蔽位(umask)。 setuid、setgid 和 tacky 位許可權也恢複給擁有 root 使用者權限的使用者。這個标志恢複檔案到其原始方式,但不恢複目錄到其原始方式。
-s 如果 tar 指令未能使用 -s 标志成功嘗試連結(正常連結)兩個檔案,請試着建立符号連結。
-SBlocksb, -S Feet, -S [email protected] 指定每卷中的 512KB 塊的數目(第一種格式),不依賴于錄音帶分塊因子。您也可以使用第二種格式,用英尺來指定錄音帶大小,在這種情況下,tar 指令假定一個預設的 Density 變量。第三種格式允許您指定錄音帶長度和密度。英尺被保守地假定為 11 英寸長。這個标志讓您更容易處理多卷錄音帶歸檔,這時 tar 指令必須能夠确定每卷能放入多少塊。
注:
1. 錄音帶機在密度能力上有差異。Density 變量計算系統在錄音帶上可放入的資料量。
2. 如果使用 1/4 英寸錄音帶裝置,在指定 Feet 變量的值時,一定要考慮錄音帶裝置上的磁道數目。例如,可以使用 -S [email protected] 标志來指定一個有 600 英尺錄音帶和 8000 位元組/英寸密度的 4 磁道、1/4 英寸錄音帶機,如下:
-S 2400@8000
這裡,600 英尺乘以 4 磁道等于 2400 英尺。
-v 在處理每個檔案時,列出它們的名稱。使用 -t 标志,-v 給出錄音帶條目的更多資訊,包括檔案大小、上次修改的時間、使用者辨別(UID)、組辨別(GID)和許可權。
-w 顯示要進行的操作,跟着是檔案名,然後等候使用者确認。如果回答是肯定的,則執行操作。如果回答不是肯定的,則忽略檔案。
-Number 使用 /dev/rmtNumber 檔案,而不是預設值。例如,-2 标志和 -f/dev/rmt2 檔案是相同的。
退出狀态
該指令傳回下列退出值:
0 成功完成。
>0 有錯誤發生。
示例
1. 要将 file1 和 file2 檔案寫到預設錄音帶機上新的歸檔中,請輸入:
tar -c file1 file2
2. 要從 /dev/rmt2 錄音帶裝置上的歸檔檔案中抽取 /tmp 目錄裡的全部檔案,并以抽取時間作為修改時間,請輸入:
tar -xm -f/dev/rmt2 /tmp
3. 要建立一個包含 file1 檔案的歸檔檔案,并傳遞歸檔檔案到 dd 指令,使之被寫到 /dev/rmt1 裝置,請輸入:
tar -cvf - file1 | dd of=/dev/rmt1 conv=sync
4. 要顯示目前目錄上 out.tar 磁盤歸檔檔案中各檔案的名稱,請輸入:
tar -vtf out.tar
5. 要擴充壓縮了的 tar 歸檔檔案,fil.tar.z, 傳遞檔案到 tar 指令,并從擴充了的 tar 歸檔檔案中抽取全部檔案,請輸入:
zcat fil.tar.Z | tar -xvf -
6. 要使用簡短相對路徑名稱歸檔 /usr/include 和 /usr/bin 檔案的内容,請輸入:
cd /usr
tar -cvf/dev/rmt0 -C./include . -C ../bin .
注:
當用相對路徑名稱指定 -C 标志的多個執行個體,使用者必須考慮到先前的 -C 标志請求。
7. 要在使用 -S 标志時歸檔到一個 8 毫米裝置,請輸入:
tar -cvf /dev/rmt0 -S 4800000b /usr
注:
當歸檔到 8 毫米裝置, 不推薦用 -S Feet 和 -S [email protected] 标志,因為 8 毫米裝置在寫入錄音帶時不使用密度概念。
8. 要歸檔所有 C 檔案的一個清單(這些檔案通過 -L 選項的 InputList 參數被列在檔案中),請輸入:
tar -cvf fl.tar -L fl_list
這裡,fl_list 是一個檔案,它包含一個所有 .c 檔案的清單。這可以通過以下指令獲得:
ls *.c > fl_list
9. 要使用 -L 選項設定變量來歸檔所有 C 檔案的一個清單,請輸入:
ls *.c > fl_list
fl=fl_list
tar -cvf var.tar -L $fl
檔案
/dev/rmt0 指定預設錄音帶裝置。
/bin/tar 指定 tar 指令的符号連結。
/usr/bin/tar 包含 tar 指令。
/tmp/tar* 指定臨時檔案。
=====================
tar 是linux下的一種打包程式,也可以說是一種壓縮格式。
linux下的壓縮格式有.gz、.tar.gz、tgz、bz2、.Z、.tar等,tar是其中的一種。
在說linux的壓縮檔案之前呢,首先要弄清兩個概念:打包和壓縮。打包是指将一大堆檔案或目錄什麼的變成一個總的檔案,壓縮則是将一個大的檔案通過一些壓縮算法變成一個小檔案。為什麼要區分這兩個概念呢?其實這源于Linux中的很多壓縮程式隻能針對一個檔案進行壓縮,這樣當你想要壓縮一大堆檔案時,你就得先借助另它的工具将這一大堆檔案先打成一個包,然後再就原來的壓縮程式進行壓縮。
Linux下最常用的打包程式就是tar了,使用tar程式打出來的包我們常稱為tar包,tar封包件的指令通常都是以.tar結尾的。生成tar包後,就可以用其它的程式來進行壓縮了,是以首先就來講講tar指令的基本用法:
tar指令的選項有很多(用man tar可以檢視到),但常用的就那麼幾個選項,下面來舉例說明一下:
# tar -cf all.tar *.jpg
這條指令是将所有.jpg的檔案打成一個名為all.tar的包。-c是表示産生新的包,-f指定包的檔案名。
# tar -rf all.tar *.gif
這條指令是将所有.gif的檔案增加到all.tar的包裡面去。-r是表示增加檔案的意思。
# tar -uf all.tar logo.gif
這條指令是更新原來tar包all.tar中logo.gif檔案,-u是表示更新檔案的意思。
# tar -tf all.tar
這條指令是列出all.tar包中所有檔案,-t是列出檔案的意思
# tar -xf all.tar
這條指令是解出all.tar包中所有檔案,-x是解開的意思
以上就是tar的最基本的用法。為了友善使用者在打包解包的同時可以壓縮或解壓檔案,tar提供了一種特殊的功能。這就是tar可以在打包或解包的同時調用其它的壓縮程式,比如調用gzip、bzip2等。
1) tar調用gzip
gzip是GNU組織開發的一個壓縮程式,.gz結尾的檔案就是gzip壓縮的結果。與gzip相對的解壓程式是gunzip。tar中使用-z這個參數來調用gzip。下面來舉例說明一下:
# tar -czf all.tar.gz *.jpg
這條指令是将所有.jpg的檔案打成一個tar包,并且将其用gzip壓縮,生成一個gzip壓縮過的包,包名為all.tar.gz
# tar -xzf all.tar.gz
這條指令是将上面産生的包解開。
2) tar調用bzip2
bzip2是一個壓縮能力更強的壓縮程式,.bz2結尾的檔案就是bzip2壓縮的結果。與bzip2相對的解壓程式是bunzip2。tar中使用-j這個參數來調用gzip。下面來舉例說明一下:
# tar -cjf all.tar.bz2 *.jpg
這條指令是将所有.jpg的檔案打成一個tar包,并且将其用bzip2壓縮,生成一個bzip2壓縮過的包,包名為all.tar.bz2
# tar -xjf all.tar.bz2
這條指令是将上面産生的包解開。
3)tar調用compress
compress也是一個壓縮程式,但是好象使用compress的人不如gzip和 bzip2的人多。.Z結尾的檔案就是bzip2壓縮的結果。與compress相對的解壓程式是uncompress。tar中使用-Z這個參數來調用gzip。下面來舉例說明一下:
# tar -cZf all.tar.Z *.jpg
這條指令是将所有.jpg的檔案打成一個tar包,并且将其用compress壓縮,生成一個uncompress壓縮過的包,包名為all.tar.Z
# tar -xZf all.tar.Z
這條指令是将上面産生的包解開
有了上面的知識,你應該可以解開多種壓縮檔案了,下面對于tar系列的壓縮檔案作一個小結:
1)對于.tar結尾的檔案
tar -xf all.tar
2)對于.gz結尾的檔案
gzip -d all.gz
gunzip all.gz
3)對于.tgz或.tar.gz結尾的檔案
tar -xzf all.tar.gz
tar -xzf all.tgz
4)對于.bz2結尾的檔案
bzip2 -d all.bz2
bunzip2 all.bz2
5)對于tar.bz2結尾的檔案
tar -xjf all.tar.bz2
6)對于.Z結尾的檔案
uncompress all.Z
7)對于.tar.Z結尾的檔案
tar -xZf all.tar.z
另外對于Window下的常見壓縮檔案.zip和.rar,Linux也有相應的方法來解壓它們:
1)對于.zip
linux下提供了zip和unzip程式,zip是壓縮程式,unzip是解壓程式。它們的參數選項很多,這裡隻做簡單介紹,依舊舉例說明一下其用法:
# zip all.zip *.jpg
這條指令是将所有.jpg的檔案壓縮成一個zip包
# unzip all.zip
這條指令是将all.zip中的所有檔案解壓出來
2)對于.rar
要在linux下處理.rar檔案,需要安裝RAR for Linux,可以從網上下載下傳,但要記住,RAR for Linux
不是免費的;然後安裝:
# tar -xzpvf rarlinux-3.2.0.tar.gz
# cd rar
# make
這樣就安裝好了,安裝後就有了rar和unrar這兩個程式,rar是壓縮程式,unrar是解壓程式。它們的參數選項很多,這裡隻做簡單介紹,依舊舉例說明一下其用法:
# rar a all *.jpg
這條指令是将所有.jpg的檔案壓縮成一個rar包,名為all.rar,該程式會将.rar 擴充名将自動附加到包名後。
# unrar e all.rar
這條指令是将all.rar中的所有檔案解壓出來
到此為至,我們已經介紹過linux下的tar、gzip、gunzip、bzip2、 bunzip2、compress、uncompress、 zip、unzip、rar、unrar等程式,你應該已經能夠使用它們對.tar、.gz、.tar.gz、.tgz、.bz2、.tar.bz2、. Z、.tar.Z、.zip、.rar這10種壓縮檔案進行解壓了,以後應該不需要為下載下傳了一個軟體而不知道如何在Linux下解開而煩惱了。而且以上方法對于Unix也基本有效。
總結一下,在linux下 一些壓縮和解壓的常用指令:
壓縮
tar –cvf jpg.tar *.jpg //将目錄裡所有jpg檔案打包成tar.jpg
tar –czf jpg.tar.gz *.jpg //将目錄裡所有jpg檔案打包成jpg.tar後,并且将其用gzip壓縮,生成一個gzip壓縮過的包,命名為jpg.tar.gz
tar –cjf jpg.tar.bz2 *.jpg //将目錄裡所有jpg檔案打包成jpg.tar後,并且将其用bzip2壓縮,生成一個bzip2壓縮過的包,命名為jpg.tar.bz2
tar –cZf jpg.tar.Z *.jpg //将目錄裡所有jpg檔案打包成jpg.tar後,并且将其用compress壓縮,生成一個umcompress壓縮過的包,命名為jpg.tar.Z
rar a jpg.rar *.jpg //rar格式的壓縮,需要先下載下傳rar for linux
zip jpg.zip *.jpg //zip格式的壓縮,需要先下載下傳zip for linux
解壓
tar –xvf file.tar //解壓 tar包
tar -xzvf file.tar.gz //解壓tar.gz
tar -xjvf file.tar.bz2 //解壓 tar.bz2
tar –xZvf file.tar.Z //解壓tar.Z
unrar e file.rar //解壓rar
unzip file.zip //解壓zip