1. 程式人生 > >tar---打包,解壓縮linux的檔案和目錄

tar---打包,解壓縮linux的檔案和目錄

tar命令可以為linux的檔案和目錄建立檔案。利用tar,可以為某一特定檔案建立檔案(備份檔案),也可以在檔案中改變檔案,或者向檔案中加入新的檔案。tar最初被用來在磁帶上建立檔案,現在,使用者可以在任何裝置上建立檔案。利用tar命令,可以把一大堆的檔案和目錄全部打包成一個檔案,這對於備份檔案或將幾個檔案組合成為一個檔案以便於網路傳輸是非常有用的。

首先要弄清兩個概念:打包和壓縮。打包是指將一大堆檔案或目錄變成一個總的檔案;壓縮則是將一個大的檔案通過一些壓縮演算法變成一個小檔案。

為什麼要區分這兩個概念呢?這源於Linux中很多壓縮程式只能針對一個檔案進行壓縮,這樣當你想要壓縮一大堆檔案時,你得先將這一大堆檔案先打成一個包(tar命令),然後再用壓縮程式進行壓縮(

gzip bzip2命令)。

語法

tar(選項)(引數)

選項

-A或--catenate:新增檔案到以存在的備份檔案;
-B:設定區塊大小;
-c或--create:建立新的備份檔案;
-C <目錄>:這個選項用在解壓縮,若要在特定目錄解壓縮,可以使用這個選項。
-d:記錄檔案的差別;
-x或--extract或--get:從備份檔案中還原檔案;
-t或--list:列出備份檔案的內容;
-z或--gzip或--ungzip:通過gzip指令處理備份檔案;
-Z或--compress或--uncompress:通過compress指令處理備份檔案;
-f<備份檔案>或--
file
=<備份檔案>:指定備份檔案; -v或--verbose:顯示指令執行過程; -r:新增檔案到已經壓縮的檔案; -u:新增改變了和現有的檔案到已經存在的壓縮檔案; -j:支援bzip2解壓檔案; -v:顯示操作過程; -l:檔案系統邊界設定; -k:保留原有檔案不覆蓋; -m:保留檔案不被覆蓋; -w:確認壓縮檔案的正確性; -p或--same-permissions:用原來的檔案許可權還原檔案; -P或--absolute-names:檔名使用絕對名稱,不移除檔名稱前的“/”號; -N <日期格式> 或 --newer=<日期時間>:只將較指定日期更新的檔案儲存到備份檔案裡; --exclude=<範本樣式>:排除符合範本樣式的檔案。

引數

檔案或目錄:指定要打包的檔案或目錄列表。

例項

將檔案全部打包成tar包

tar -cvf log.tar log2012.log    僅打包,不壓縮! 
tar -zcvf log.tar.gz log2012.log   打包後,以 gzip 壓縮 
tar -jcvf log.tar.bz2 log2012.log  打包後,以 bzip2 壓縮 

在選項f之後的檔案檔名是自己取的,我們習慣上都用 .tar 來作為辨識。 如果加z選項,則以.tar.gz或.tgz來代表gzip壓縮過的tar包;如果加j選項,則以.tar.bz2來作為tar包名。

查閱上述tar包內有哪些檔案

tar -ztvf log.tar.gz

由於我們使用 gzip 壓縮的log.tar.gz,所以要查閱log.tar.gz包內的檔案時,就得要加上z這個選項了。

將tar包解壓縮

tar -zxvf /opt/soft/test/log.tar.gz

在預設的情況下,我們可以將壓縮檔在任何地方解開的

只將tar內的部分檔案解壓出來

tar -zxvf /opt/soft/test/log30.tar.gz log2013.log

我可以透過tar -ztvf來查閱 tar 包內的檔名稱,如果單隻要一個檔案,就可以透過這個方式來解壓部分檔案!

檔案備份下來,並且儲存其許可權

tar -zcvpf log31.tar.gz log2014.log log2015.log log2016.log

這個-p的屬性是很重要的,尤其是當您要保留原本檔案的屬性時。

在資料夾當中,比某個日期新的檔案才備份

tar -N "2012/11/13" -zcvf log17.tar.gz test

備份資料夾內容是排除部分檔案:

tar --exclude scf/service -zcvf scf.tar.gz scf/*