新增文件到以存在的備份文件

-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=<范本樣式>
排除符合范本樣式的文件

 

什么是“文件壓縮”?

我們知道,在計算機系統中文件的內容是信息,信息實際上就是一個由值0和值1組成的位(又稱為比特)序列,8個位被組織成一組,稱為字節。一般來說,一個字節的8位是沒有被全部利用起來的,這些沒有被利用的位占據了一個文件的大部分空間,而“文件壓縮”就是利用復雜的計算方式,將這些沒有利用的空間騰出來,以讓文件占用的空間變小。

簡單來說,「壓縮」就是把文件中沒有完全填滿的空間填滿。壓縮過的文件不能直接被操作系統所使用,因此,「解壓縮」就是指把文件「還原」為未壓縮之前的模樣。壓縮前與壓縮后的文件所占用的磁盤空間大小之比就是「壓縮比」。
常見的壓縮格式

Linux 中常見的壓縮格式有:

*.Z:compress 程序壓縮的文件。
*.gz:gzip 程序壓縮的文件。
*.bz2:bzip2 程序壓縮的文件。
*.tar:tar 程序打包的數據,沒有被壓縮過。
*.tar.gz(簡寫為 .tgz):tar 程序打包的數據,經過 gzip 的壓縮。
*.tar.bz2(簡寫為 .tbz2):tar 程序打包的數據,經過 bzip2 的壓縮。

上面的壓縮格式中,主要是gzip和bzip2兩個壓縮命令,它們是GNU計劃的中的一部分,在此之前是compress命令,但它已經不再流行了。bzip2比gzip的壓縮比很好,不過bzip2通常只能針對一個文件來壓縮和解壓縮。如果是這樣的話,壓縮整個開發環境目錄就太繁瑣了。

因此tar命令就出現了,tar不是一個 “壓縮命令”,而是一個“打包命令”。也就是說,tar可以把很多文件「打包」成一個文件,甚至連目錄也可以進行打包。一開始tar命令的確是不支持壓縮的功能,后來GNU計劃為了提供給使用者更方便并且更加強大的壓縮與打包功能,就把整個tar與壓縮的功能結合在一起了。

僅僅打包起來的tar文件俗稱tarfile文件,經過壓縮的tar文件叫做tarball文件。

全能的 tar 命令

概要

tar可以將多個目錄或文件打成一個大文件,同時支持gzip/bzip2

歸檔:tar {-c} [option…] -f destination source

追加歸檔:tar {-r | -u} -f source [option…] destination

解壓:tar {-t | -x} -f source [option…] -C destination

最簡單的使用 tar 只要記住下面的方式:

壓縮:tar -jcv -f filename.tar.bz2 被壓縮的文件或目錄名稱
查看文件:tar -jtv -f filename.tar.bz2
解壓縮:tar -jxv -f filename.tar.gz -C 解壓到哪里

filename.tar.bz2 既然tar不是一個壓縮命令,是個打包命令,那么是如何做到打包并壓縮的呢?我們先來看一下tar命令的常用參數:

模式參數

-c(–create):創建新的歸檔文件。
-r(–append):與-c一樣創建新的歸檔文件,但這是以追加的模式,只能往未壓縮過的歸檔文件中追加,要求指定-f參數。
-t:查看歸檔文件的內容含有哪些文件,可以看到包括文件名在內的詳細信息。
-u:與-r一樣,但是只往歸檔文件添加更新的文件。
-x:解壓縮歸檔文件。如果一個歸檔文件里有相同文件名的多個文件,那么會先將每個文件解壓,最新的文件將覆蓋舊的文件。

tar分為三種模式,-c,-r,-u三個一類,為歸檔/壓縮模式,在該模式下,tar會遞歸遍歷指定目錄下的所有目錄和文件,并創建歸檔文件。-x表示為去歸檔/解壓模式,-t表示為打印列表模式。

通用參數

-j:使用bzip2的支持進行壓縮和解壓縮,文件名最好為*.tar.bz2。
-z:使用gzip的支持進行壓縮和解壓縮,文件名最好為*.tar.gz。
-v:在壓縮/解壓縮的過程中,將正在處理的文件名顯示出來。
-f:后面接被處理的文件名,最好把-f單獨出來寫一個參數。
-C:指定解壓的目錄。
-p:保留文件的原始信息,權限等等
-P:解壓時保留絕對路徑。
–exclude=FILE:在打包壓縮的時候,不要將FILE打包。

打包并創建歸檔文件

示例:打包一個目錄。

描述:將/home/test這個目錄打包,生成文件名為command-18-06-02.tar的歸檔文件,保存在當前目錄下。

# tar -cv -f command-18-06-02.tar /home/test
/home/test/.bash_logout
/home/test/.bashrc
/home/test/apache-tomcat-9.0.7.tar.gz
/home/test/.bash_profile
/home/test/nginx-1.10.1.tar.gz

-c(–create的簡寫)參數,這表示為指定的文件或者目錄創建新的歸檔文件。使用-f指定讀取或者寫入的歸檔文件,可以用-表示標準輸入或者標準輸出,-f可以與其他參數連起來寫,必須保證f參數后面跟的是文件名。但不推薦這樣寫,因為參數調換順序是允許的,如果寫成-cfv就會導致壓縮后的文件名變成了v。

使用-v表示生成詳細的輸出,在壓縮或者解壓的模式中,會列出正在向歸檔文件讀或者寫的文件名字。

創建tar.gz歸檔文件

示例:打包并且使用gzip壓縮。

描述:將/home/test/images目錄下的所有文件以及目錄中的文件打包,并用gzip進行壓縮,生成名為MyImages-18-06-02.tar.gz的歸檔文件,放在當前目錄下。

# tar -zcv -f MyImages-18-06-02.tar.gz /home/test/images
OR
# tar -zcv -f MyImages-18-06-02.tar.tgz /home/test/images
/home/test/images/alejandro-gonzalez-17189.jpg
/home/test/images/brooke-lark-275181.jpg
/home/test/images/brenda-godinez-228181.jpg
/home/test/images/artur-rutkowski-97622.jpg
/home/test/images/ben-white-138743.jpg

-z表示要使用gzip支持來壓縮或者解壓文件,注意gzip的壓縮的文件格式最好寫成tar.gz。(注:tar.gz 和 tgz 是同一個意思)

打包壓縮排除某些文件

示例:打包壓縮并排除某些文件。

描述:將/home/test/images目錄下,排除brooke-lark-275181.jpg和ben-white-138743.jpg之外的所有文件打包,并用gzip進行壓縮,生成名為MyImages-18-06-02.tar.gz的歸檔文件,放在當前目錄下。

# tar -czv -f MyImages-18-06-02.tar.gz --exclude=./brooke-lark-275181.jpg --exclude=./ben-white-138743.jpg /home/test/images
/home/test/images/alejandro-gonzalez-17189.jpg
/home/test/images/brenda-godinez-228181.jpg
/home/test/images/artur-rutkowski-97622.jpg

解壓歸檔文件(默認)

示例:解壓,默認解壓。

描述:將名為MyImages-18-06-02.tar的歸檔文件解壓至當前目錄下。

# tar -xvf MyImages-18-06-02.tar
home/test/images/alejandro-gonzalez-17189.jpg
home/test/images/brenda-godinez-228181.jpg
home/test/images/artur-rutkowski-97622.jpg

其中,-x參數表示去解壓一個歸檔文件,如果歸檔文件中有兩個相同名字的文件,那么每一個文件都會被解壓出來,然后最新的會覆蓋舊的文件。注意這里沒有指定-j參數,因為tar看到指定了-x參數,就知道這是解壓操作,會自動判斷該解壓包的壓縮類型。

解壓歸檔文件并指定目錄

示例:解壓到一個指定目錄。

描述:將名為MyImages-18-06-02.tar.gz的歸檔文件解壓至一個指定的目錄。

# tar -xv -f MyImages-18-06-02.tar -C /home/test/public_images
home/test/public_images/alejandro-gonzalez-17189.jpg
home/test/public_images/brenda-godinez-228181.jpg
home/test/public_images/artur-rutkowski-97622.jpg

查看壓縮包文件信息

示例:查看壓縮包文件信息。

描述:列出MyImages-18-06-02.tar.bz2中的文件信息,-v參數,會生成與ls(1)命令相近的輸出。

# tar -tv -f MyImages-18-06-02.tar.gz
OR
# tar -tv -f MyImages-18-06-02.tar.bz2
-rw-r--r-- root/root 2176861 2018-06-02 21:26 home/test/images/alejandro-gonzalez-17189.jpg
-rw-r--r-- root/root 8452524 2018-06-02 21:26 home/test/images/brenda-godinez-228181.jpg
-rw-r--r-- root/root 1131986 2018-06-02 21:26 home/test/images/artur-rutkowski-97622.jpg

解壓單個文件

示例:解壓單個文件。

描述:將home/test/.bashrc這一個文件從歸檔文件中提取出來。

# tar -xv -f command-18-06-02.tar home/test/.bashrc
home/test/.bashrc

解壓多個指定的文件

示例:解壓多個指定的文件。

描述:將file1、file2等多個文件從歸檔文件中提取出來,可以用空格隔開多個文件,也可以用通配符的形式。

# tar -zxv -f MyImages-18-06-02.tar.gz file 1 file 2
OR
# tar -zxv -f MyImages-18-06-02.tar.gz --wildcards \\\'*b*.jpg\\\'
home/test/images/brooke-lark-275181.jpg
home/test/images/brenda-godinez-228181.jpg
home/test/images/ben-white-138743.jpg
home/test/images/aleks-dahlberg-274646.jpg

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對三五互聯的支持。

更多關于云服務器域名注冊,虛擬主機的問題,請訪問三五互聯官網:m.shinetop.cn

贊(0)
聲明:本網站發布的內容(圖片、視頻和文字)以原創、轉載和分享網絡內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。郵箱:3140448839@qq.com。本站原創內容未經允許不得轉載,或轉載時需注明出處:三五互聯知識庫 » Linux shell命令用法及常見用例之tar命令

登錄

找回密碼

注冊