Linux tar命令使用列子第1/2頁
2024-09-05 23:02:17
供稿:網友
用tar建立存檔
tar是"tape archive"(磁帶存檔)的簡稱,它出現在還沒有軟盤驅動器、硬盤和光盤驅動器的計算機早期階段。那時軟件的發行和備份都需要大卷的磁帶,計算機上運行的頭幾個程序中就得有一個是磁帶的閱讀程序。隨著時間的推移, tar命令逐漸變為一個將很多文件進行存檔的工具,目前許多用于Linux操作系統的程序就是打包為tar檔案文件的形式。
tar 命令的格式是:
tar [option] <file>;
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歸檔??梢允褂胻ar命令的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