tar命令介紹

tonykorn97發表於2006-04-23

tar 命令的格式是:

tar [option] ;

tar命令有很多引數,利用f選項、裝置或檔案的名字可以指示tar命令將檔案置於特定的裝置或檔案中。當為tar的檔案建立一個檔案時,這個檔名的擴充套件通常是如果指定了一個目錄名,那麼它所有的子目錄都會被包含在檔案之中。


利用tar命令和f選項的格式如下所示:

#tar opionsf archive-name.tar directory-and-filenames

要建立一個檔案應使用c選項,與f選項一起,c選項會在裝置或檔案中建立檔案,應在f選項的左邊輸入這一選項。在下例中,目錄mydir和它所有的子目錄都被存入檔案myarch.tar中。

#tar cf myarch.tar mydir

如果想要改動已經存檔的目錄中的檔案,可以使用u選項使tar更新檔案中的檔案。tar比較每一個檔案檔案與相應使用者目錄中檔案最近一次修改的時間,然後將上一次存檔之後又被修改過的檔案複製到檔案檔案中去。在使用者目錄中新建立的檔案也會被新增到檔案檔案中。在下面的例子中,使用者用mydir目錄中最近被修改或新增的檔案來對myarch.tar檔案進行更新。

#tar uf myarch.tar mydir

如果想檢視在一個檔案中儲存著哪些檔案,可以使用tar命令和t選項。下面命令列出所有儲存在myarch.tar檔案中的檔案:

#tar tf myarch.tar

要將檔案備份到一個特定的裝置,只須把裝置名作為檔案。在下面的例子中,使用者在/dev/fdo裝置的軟盤中建立了一個檔案,並將mydir目錄中所有的檔案都複製到檔案中。

#tar cf/dev/fdo mydir

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

#tar xf/dev/fdo

如果所備份的檔案大小超過裝置可用的儲存器,比如軟盤,此時就可以建立一個使用多個標號的tar檔案。當使用m選項向一個軟碟機進行存檔時,tar命令在一張軟盤已滿的時候會提醒再放入一張新的軟盤。

#tar cmf/dev/fdo mydir

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

#tar xmf/dev/fdo

tar操作不會對檔案檔案實行壓縮操作。如果想壓縮檔案檔案,可以指示tar啟用gzip實用工具,在存檔之前對檔案進行壓縮。利用z選項,tar在對檔案存檔之前首先要使用gzip來壓縮檔案。當恢復檔案時,同樣的Z選項將啟用gzip對檔案解壓。

#tar czf myarch.tar mydir

值得注意的是,壓縮檔案中的單個檔案和整體壓縮檔案是不同的。通常檔案檔案是為了便於傳輸而把幾個檔案組合成為一個tar檔案。為了縮短傳輸時間,檔案應當越小越好,可以將其壓縮然後傳送壓縮後的版本。接收者可以對之解壓縮,然後恢復tar檔案。在tar檔案上使用gzip將會產生有.tar.gz副檔名的檔案。副檔名.gz被加到被壓縮的gzip檔名之後。

下面的例子建立了myarch.tar的一個壓縮的版本,它具有了.gz的副檔名。

#gzip myarch.tar
#ls
#myarch.tar.gz

tar命令雖然有非常多的引數,但是使用起來並不困難,可以快速而又簡單地為任何需要的子目錄生成檔案檔案。

首先,我們來建立一個有三個檔案的子目錄,再建立一個有另外三個檔案的子目錄,如下所示:

# mkdir mydir
#cd mydir
# touch file1 file2 file3
# mkdir mydir2
#cd mydir2
# touch file21 file22 file23
#cd../..
#tree mydir
mydir
file1
file2
file3
mydir2
file21
file22
file23

現在已經有了一個子目錄和其中的檔案,使用這個命令的c(生成)和f(檔案)引數來生成一個tar檔案檔案:

# tar cf mydir.tar mydir
# ls -l *.tar
- r w - r - - r - - 1 bball u s e r s 10240 Jan 5 15 : 01 mydir. t a r

請注意,原來的子目錄並沒有發生變化。在預設的情況下,tar命令不會刪除原來的子目錄和檔案。如果想看看命令執行的過程,可以使用v引數,如下所示:

# tar cvf mydir.tar mydir
mydir/
mydir/file1
mydir/file2
mydir/file3
mydir/mydir2/
mydir/mydir2/file21
mydir/mydir2/file22
mydir/mydir2/file23

tar命令在進行操作的時候,就會把正在新增到檔案檔案中去的子目錄和檔案的檔名顯示出來。使用w引數,即互動引數,這樣tar命令在執行的過程當中會詢問是否想加入每個檔案。當想有選擇地備份內容不多的子目錄的時候,這樣就非常地方便,如下所示:

# tar cwf mydir.tar mydir
add mydir?y
add mydir/file1?n
add mydir/file2?y
add mydir/file3?n
add mydir/mydir2?y
add mydir/mydir2/file21?y
add mydir/mydir2/file22?n
add mydir/mydir2/file23?y

在上面的例子中,沒有把檔案file1、file3和檔案file22歸檔。可以使用tar命令的t引數列出檔案檔案中的內容,f引數定義操作所使用的tar檔案檔案,如下所示:

# tar tf mydir.tar
mydir/
mydir/file2
mydir/mydir2/
mydir/mydir2/file21
mydir/mydir2/file23

需要注意的是,如果引數的順序放錯了,tar命令會顯示出錯資訊並退出。

下面就來看看如何來釋放整個的檔案檔案或者其中的某一個檔案。如果想釋放其中所有的檔案,可以同時使用-x釋放引數和-f。為了瞭解命令執行的過程,還可以加上-v引數:

# tar xvf mydir.tar
mydir/
mydir/file2
mydir/mydir2/
mydir/mydir2/file21
mydir/mydir2/file23

如果只是想從檔案檔案中釋放幾個檔案的話,可以再次使用w引數:

# tar xvwf mydir.tar
extract mydir/?y
mydir
extract mydir/file2?y
mydir/file2
extract mydir/mydir2/?y
mydir/mydir2/
extract mydir/mydir2/file21?y
mydir/mydir2/file21
extract mydir/mydir2/file23?y
mydir/mydir2/file23

上例表明檢視了檔案檔案,並互動地釋放了檔案。如果只想從檔案檔案中釋放某一個檔案,可以在命令列中指定這個檔案。作為示例,我先刪除了原始的mydir子目錄,然後使用一個空的子目錄進行如下操作:

# tar xf mydir.tar mydir/mydir2/file23
# tree mydir
m y d i r
- - mydir2
- - file23
1 directory, 1 file

注意,正如所看到的只有一個檔案被釋放出來。雖然tar命令不會覆蓋整個的子目錄,但是它會覆蓋掉那些有著相同檔名的檔案。

值得一提的是,還可以使用其它程式,如BRU-2000或者taper指令碼程式來備份系統或者選定的檔案和子目錄。OpenLinux作業系統也可以透過cron日程安排來自動進行檔案的歸檔整理工作。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/312079/viewspace-245237/,如需轉載,請註明出處,否則將追究法律責任。