天天看點

在linux中建立和解壓文檔的11個 tar 指令例子在linux中建立和解壓文檔的11個 tar 指令例子

tar(錄音帶歸檔)指令是linux系統中被經常用來将檔案存入到一個歸檔檔案中的指令。

其常見的檔案擴充包括:.tar.gz 和 .tar.bz2, 分别表示通過了gzip或bzip算法進一步進行了壓縮。

在本教程中我們會管中窺豹一下在linux桌面或伺服器版本中使用tar指令來處理一些建立和解壓歸檔檔案的日常工作的例子。

在linux中建立和解壓文檔的11個 tar 指令例子在linux中建立和解壓文檔的11個 tar 指令例子

<a target="_blank"></a>

tar指令在大部分linux系統預設情況下都是可用的,是以你不用單獨安裝該軟體。

tar指令具有兩個壓縮格式,gzip和bzip,該指令的“z”選項用來指定gzip,“j”選項用來指定bzip。同時也可以建立非壓縮歸檔檔案。

一般常見的用法是用來解壓歸檔檔案,下面的指令将會把檔案從一個tar.gz歸檔檔案中解壓出來。

<code>$ tar -xvzf tarfile.tar.gz</code>

這裡對這些參數做一個簡單解釋-

x - 解壓檔案 v - 冗長模式,在解壓每個檔案時列印出檔案的名稱。 z - 該檔案是一個使用 gzip 壓縮的檔案。 f - 使用接下來的tar歸檔來進行操作。

這些就是一些需要記住的重要選項。

解壓 tar.bz2/bzip 歸檔檔案

具有bz2擴充名的檔案是使用bzip算法進行壓縮的,但是tar指令也可以對其進行處理,但是需要通過使用“j”選項來替換“z”選項。

<code>$ tar -xvjf archivefile.tar.bz2</code>

為了将檔案解壓到一個指定的目錄中,使用“-c”選項來指定路徑,此處的“c”是大寫“c”。

<code>$ tar -xvzf abc.tar.gz -c /opt/folder/</code>

然後,首先需要确認目标目錄是否存在,畢竟tar指令并不會為你建立目錄,是以如果目标目錄不存在的情況下該指令會失敗。

為了從一個歸檔檔案中提取出單個檔案,隻需要将檔案名按照以下方式将其放置在指令後面。

<code>$ tar -xz -f abc.tar.gz "./new/abc.txt"</code>

在上述指令中,可以按照以下方式來指定多個檔案。

<code>$ tar -xz -f abc.tar.gz "./new/cde.txt" "./new/abc.txt"</code>

通配符可以用來解壓于給定通配符比對的一批檔案,例如所有以".txt"作為擴充名的檔案。

<code>$ tar -xz -f abc.tar.gz --wildcards "*.txt"</code>

如果你僅僅想要列出而不是解壓tar歸檔檔案的中的内容,使用“-t”(test)選項, 下面的指令用來列印一個使用gzip壓縮過的tar歸檔檔案中的内容。

<code>$ tar -tz -f abc.tar.gz</code>

<code>./new/</code>

<code>./new/cde.txt</code>

<code>./new/subdir/</code>

<code>./new/subdir/in.txt</code>

<code>./new/abc.txt</code>

<code>...</code>

可以将輸出通過管道定向到grep來搜尋一個檔案,或者定向到less指令來浏覽内容清單。 使用"v"冗長選項将會列印出每個檔案的額外詳細資訊。

對于 tar.bz2/bzip檔案,需要使用"j"選項。

結合上述的指令和grep指令來檢索歸檔檔案,如下所示。簡單吧!

<code>$ tar -tvz -f abc.tar.gz | grep abc.txt</code>

<code>-rw-rw-r-- enlightened/enlightened 0 2015-01-13 11:40 ./new/abc.txt</code>

現在我們已經學過了如何解壓一個tar歸檔檔案,是時候開始建立一個新的tar歸檔檔案了。tar指令可以用來将所選的檔案或整個目錄放入到一個歸檔檔案中,以下是相應的樣例。

下面的指令使用一個目錄來建立一個tar歸檔檔案,它會将該目錄中所有的檔案和子目錄都加入到歸檔檔案中。

<code>$ tar -cvf abc.tar ./new/</code>

上述指令不會建立一個壓縮的的歸檔檔案,隻是一個普通的歸檔檔案,隻是将多個檔案放入到一個歸檔檔案中并沒有真正地壓縮每個檔案。

為了使用壓縮,可以分别使用“z”或“j”選項進行gzip或bzip壓縮算法。

<code>$ tar -cvzf abc.tar.gz ./new/</code>

檔案的擴充名其實并不真正有什麼影響。“tar.gz” 和“tgz”是gzip壓縮算法壓縮檔案的常見擴充名。 “tar.bz2”和“tbz”是bzip壓縮算法壓縮檔案的常見擴充名(lctt 譯注:歸檔是否是壓縮的和采用哪種壓縮方式并不取決于其擴充名,擴充名隻是為了便于辨識。)。

一個有用的選項是“w”,該選項使得tar指令在添加每個檔案到歸檔檔案之前來讓使用者進行确認,有時候這會很有用。

使用該選項時,隻有使用者輸入“y”時的檔案才會被加入到歸檔檔案中,如果你不輸入任何東西,其預設表示是一個“n”。

<code># 添加指定檔案</code>

<code></code>

<code>$ tar -czw -f abc.tar.gz ./new/*</code>

<code>add ‘./new/abc.txt’?y</code>

<code>add ‘./new/cde.txt’?y</code>

<code>add ‘./new/newfile.txt’?n</code>

<code>add ‘./new/subdir’?y</code>

<code>add ‘./new/subdir/in.txt’?n</code>

<code>#現在列出所有被加入的檔案</code>

<code>$ tar -t -f abc.tar.gz</code>

“r”選項可以被用來将檔案加入到已存在的歸檔檔案中,而不用建立一個新的歸檔檔案,下面是一個簡單的樣例:

<code>$ tar -rv -f abc.tar abc.txt</code>

檔案并不能加入到已壓縮的歸檔檔案中(gz 或 bzip)。檔案隻能被加入到普通的歸檔檔案中。

之前已經提到了不可能将檔案加入到已壓縮的歸檔檔案中,然而依然可以通過簡單的一些把戲來完成。使用gunzip指令來解壓縮歸檔檔案,然後将檔案加入到歸檔檔案中後重新進行壓縮。

<code>$ gunzip archive.tar.gz</code>

<code>$ tar -rf archive.tar ./path/to/file</code>

<code>$ gzip archive.tar</code>

對于bzip檔案分别使用bzip2和bunzip2。

一個真實的場景是在固定的時間間隔内來備份目錄,tar指令可以通過cron排程來實作這樣的一個備份,以下是一個樣例 :

<code>$ tar -cvz -f archive-$(date +%y%m%d).tar.gz ./new/</code>

使用cron來運作上述的指令會保持建立類似以下名稱的備份檔案 :'archive-20150218.tar.gz'。

當然,需要確定日益增長的歸檔檔案不會導緻磁盤空間的溢出。

"w"選項可以用來在建立歸檔檔案之後進行驗證,以下是一個簡單例子。

<code>$ tar -cvw -f abc.tar ./new/</code>

<code>./new/newfile.txt</code>

<code>verify ./new/</code>

<code>verify ./new/cde.txt</code>

<code>verify ./new/subdir/</code>

<code>verify ./new/subdir/in.txt</code>

<code>verify ./new/newfile.txt</code>

<code>verify ./new/abc.txt</code>

需要注意的是驗證動作不能在壓縮過的歸檔檔案上進行,隻能在非壓縮的tar歸檔檔案上執行。

這次就先到此為止,可以通過“man tar”指令來檢視tar指令的的手冊。

原文釋出時間:2015-04-01

本文來自雲栖合作夥伴“linux中國”

繼續閱讀