linuxtar命令解壓怎麼用?tar 是 Unix 和基于 Linux 的系統中最常用的文件歸檔格式之一,今天小編就來聊一聊關于linuxtar命令解壓怎麼用?接下來我們就一起去研究一下吧!
tar 是 Unix 和基于 Linux 的系統中最常用的文件歸檔格式之一。
該名稱本身源自T ape AR chive,因為它是為在磁帶設備上寫入順序數據而開發的,它有時也被稱為 tarball。
默認情況下,tar 隻存檔文件而不壓縮,但使用某些部分,我們可以使用不同的壓縮技術來獲得壓縮輸出,tar 實用程序通常默認包含在大多數Linux發行版中,并且通過不同的工具和實用程序,其他操作系統(包括 Windows 和 macOS)都支持該格式本身。
我們将在本文中介紹 tar 命令。
那麼讓我們開始吧……
1、創建 tar 存檔要創建一個簡單的未壓縮檔案,tar命令的語法是:
$ tar cvf <tar-file-name> <files-to-archive>
這裡的标志c代表創建、v詳細輸出和f指定 tar 存檔文件名。
按照慣例,指定帶有.tar擴展名的 tar 文件名,要存檔的文件可以使用通配符或單個或多個文件名/路徑指定。
例如,我的目錄中有三個文件:
$ ls -l
total 12
-rw-r--r-- 1 wljslmz wljslmz 13 Sep 12 20:08 file1.txt
-rw-r--r-- 1 wljslmz wljslmz 19 Sep 12 20:08 file2.txt
-rw-r--r-- 1 wljslmz wljslmz 24 Sep 12 20:08 file3.txt
$
我想創建一個tar包含所有三個文件的存檔,可以這樣做:
$ tar cvf archive.tar *
file1.txt
file2.txt
file3.txt
$ ls -l archive.tar
-rw-r--r-- 1 wljslmz wljslmz 10240 Sep 12 20:15 archive.tar
$
我也可以僅指定要存檔的特定文件,例如:
$ tar cvf archive1.tar file1.txt file2.txt
file1.txt
file2.txt
$ ls -l archive1.tar
-rw-r--r-- 1 wljslmz wljslmz 10240 Sep 12 20:15 archive1.tar
$
tar 不僅可以存檔文件,還可以壓縮它們以節省空間,一個流行的壓縮格式是gunzip解,通常是由擴展表示.gz後.tar或作為tgz。
我們可以使用z标志來指定我們需要使用 gunzip 壓縮的文件,下面是一個例子:
$ tar cvzf archive.tar.gz file*
file1.txt
file2.txt
file3.txt
$ ls -l archive.tar archive.tar.gz
-rw-r--r-- 1 wljslmz wljslmz 10240 Sep 12 20:15 archive.tar
-rw-r--r-- 1 wljslmz wljslmz 188 Sep 12 20:21 archive.tar.gz
$
您可以觀察到兩個存檔文件的大小有很大不同,即使它們都包含相同的三個文件,這是由于使用了壓縮 usingz标志。
3、創建壓縮檔案 (BZ2)tar 支持其他幾種壓縮格式,其中之一是bz2或bzip2由擴展名tar.bz2或有時表示為tbz2,它可能會為您提供更小的存檔大小,但反過來會消耗更多的 CPU,因此壓縮/解壓縮的過程可能比gz存檔慢。
例子:
$ tar cvjf archive.tar.bz2 file*
file1.txt
file2.txt
file3.txt
$ ls -l archive.tar archive.tar.gz archive.tar.bz2
-rw-r--r-- 1 wljslmz wljslmz 10240 Sep 12 20:15 archive.tar
-rw-r--r-- 1 wljslmz wljslmz 212 Sep 12 20:25 archive.tar.bz2
-rw-r--r-- 1 wljslmz wljslmz 188 Sep 12 20:21 archive.tar.gz
$ file archive.tar*
archive.tar: POSIX tar archive (GNU)
archive.tar.bz2: bzip2 compressed data, block size = 900k
archive.tar.gz: gzip compressed data, from Unix, original size modulo 2^32 10240
$
使用該x選項可以簡單地提取 tar 存檔(無論是壓縮的還是未壓縮的),下面的例子将闡明它的用法:
$ tar xvf archive.tar
file1.txt
file2.txt
file3.txt
$ ls -l
total 24
-rw-r--r-- 1 wljslmz wljslmz 10240 Sep 19 18:25 archive.tar
-rw-r--r-- 1 wljslmz wljslmz 13 Sep 12 20:08 file1.txt
-rw-r--r-- 1 wljslmz wljslmz 19 Sep 12 20:08 file2.txt
-rw-r--r-- 1 wljslmz wljslmz 24 Sep 12 20:08 file3.txt
$
這适用于gz壓縮存檔:
$ tar xvf archive.tar.gz
file1.txt
file2.txt
file3.txt
$ ls -l
total 16
-rw-r--r-- 1 wljslmz wljslmz 188 Sep 19 18:27 archive.tar.gz
-rw-r--r-- 1 wljslmz wljslmz 13 Sep 12 20:08 file1.txt
-rw-r--r-- 1 wljslmz wljslmz 19 Sep 12 20:08 file2.txt
-rw-r--r-- 1 wljslmz wljslmz 24 Sep 12 20:08 file3.txt
$
甚至對于bz2壓縮存檔來說:
$ tar xvf archive.tar.bz2
file1.txt
file2.txt
file3.txt
$ ls -l
total 16
-rw-r--r-- 1 wljslmz wljslmz 212 Sep 19 18:31 archive.tar.bz2
-rw-r--r-- 1 wljslmz wljslmz 13 Sep 12 20:08 file1.txt
-rw-r--r-- 1 wljslmz wljslmz 19 Sep 12 20:08 file2.txt
-rw-r--r-- 1 wljslmz wljslmz 24 Sep 12 20:08 file3.txt
$
要列出 tar 存檔的内容,您可以使用t如下所示的标志:
$ tar tvf archive.tar.bz2
-rw-r--r-- wljslmz/wljslmz 13 2021-09-12 20:08 file1.txt
-rw-r--r-- wljslmz/wljslmz 19 2021-09-12 20:08 file2.txt
-rw-r--r-- wljslmz/wljslmz 24 2021-09-12 20:08 file3.txt
$
隻有一個文件可以從提取tar或tar.gz或tar.bz2通過指定文件名作為歸檔:
$ tar xvf archive.tar.bz2 file1.txt
file1.txt
$ ls -l
total 8
-rw-r--r-- 1 wljslmz wljslmz 212 Sep 19 18:31 archive.tar.bz2
-rw-r--r-- 1 wljslmz wljslmz 13 Sep 12 20:08 file1.txt
$
同樣,您可以指定多個以空格分隔的文件名,以一次性提取它們。
$ tar xvf archive.tar.bz2 file1.txt file3.txt
file1.txt
file3.txt
$ ls -l
total 12
-rw-r--r-- 1 wljslmz wljslmz 212 Sep 19 18:31 archive.tar.bz2
-rw-r--r-- 1 wljslmz wljslmz 13 Sep 12 20:08 file1.txt
-rw-r--r-- 1 wljslmz wljslmz 24 Sep 12 20:08 file3.txt
$
要使用通配符提取一個或多個文件PATTERN,請使用--wildcards标志:
$ tar xvf archive.tar.bz2 --wildcards "file*"
file1.txt
file2.txt
file3.txt
$ ls -l
total 16
-rw-r--r-- 1 wljslmz wljslmz 212 Sep 19 18:31 archive.tar.bz2
-rw-r--r-- 1 wljslmz wljslmz 13 Sep 12 20:08 file1.txt
-rw-r--r-- 1 wljslmz wljslmz 19 Sep 12 20:08 file2.txt
-rw-r--r-- 1 wljslmz wljslmz 24 Sep 12 20:08 file3.txt
$
通過使用r或--append标記新文件名或通配符模式,可以将新文件添加/附加到現有的未壓縮 tarball (請記住,這僅适用于未壓縮.tar文件,不适用于tar.gz或tar.bz2壓縮格式):
$ tar rvf archive.tar file-new*
file-new.txt
file-new2.txt
$ tar tvf archive.tar
-rw-r--r-- wljslmz/wljslmz 13 2021-09-12 20:08 file1.txt
-rw-r--r-- wljslmz/wljslmz 19 2021-09-12 20:08 file2.txt
-rw-r--r-- wljslmz/wljslmz 24 2021-09-12 20:08 file3.txt
-rw-r--r-- wljslmz/wljslmz 15 2021-09-19 18:59 file2.txt
-rw-r--r-- wljslmz/wljslmz 10 2021-09-19 18:58 file4.txt
-rw-r--r-- wljslmz/wljslmz 9 2021-09-19 19:10 file-new.txt
-rw-r--r-- wljslmz/wljslmz 9 2021-09-19 19:10 file-new2.txt
$
您可以觀察到archive.tar再次列出的内容顯示了兩個新添加的文件。
9、從存檔中删除文件可以使用--delete如下所示的标志從 tar 存檔中删除特定文件(比較文件删除前和删除後的 tar 列表):
$ tar tvf archive.tar
-rw-r--r-- wljslmz/wljslmz 13 2021-09-12 20:08 file1.txt
-rw-r--r-- wljslmz/wljslmz 19 2021-09-12 20:08 file2.txt
-rw-r--r-- wljslmz/wljslmz 24 2021-09-12 20:08 file3.txt
-rw-r--r-- wljslmz/wljslmz 15 2021-09-19 18:59 file2.txt
-rw-r--r-- wljslmz/wljslmz 10 2021-09-19 18:58 file4.txt
-rw-r--r-- wljslmz/wljslmz 9 2021-09-19 19:10 file-new.txt
-rw-r--r-- wljslmz/wljslmz 9 2021-09-19 19:10 file-new2.txt
$ tar --delete -f archive.tar file-new.txt file-new2.txt
$ tar tvf archive.tar
-rw-r--r-- wljslmz/wljslmz 13 2021-09-12 20:08 file1.txt
-rw-r--r-- wljslmz/wljslmz 19 2021-09-12 20:08 file2.txt
-rw-r--r-- wljslmz/wljslmz 24 2021-09-12 20:08 file3.txt
-rw-r--r-- wljslmz/wljslmz 15 2021-09-19 18:59 file2.txt
-rw-r--r-- wljslmz/wljslmz 10 2021-09-19 18:58 file4.txt
$
同樣,這僅适用于未壓縮的 tarball,對于壓縮存檔格式将失敗。
10、使用驗證創建創建未壓縮的 tar 文件時,您可以使用以下W标志驗證存檔的内容:
$ tar cvfW archive.tar file*.txt
file1.txt
file2.txt
file3.txt
Verify file1.txt
Verify file2.txt
Verify file3.txt
$
這不能與壓縮标志一起使用,盡管您可以tar稍後使用gzip或其他工具壓縮創建的文件。
11、解壓tar到文件夾如果要将 tarball 内容解壓縮到特定文件夾而不是當前目錄,請使用-C帶有目錄路徑的标志,如下所示:
$ tar xvf archive.tar -C new-directory/
file1.txt
file2.txt
file3.txt
file2.txt
file4.txt
$ ls -l new-directory/
total 16
-rw-r--r-- 1 wljslmz wljslmz 13 Sep 12 20:08 file1.txt
-rw-r--r-- 1 wljslmz wljslmz 15 Sep 19 18:59 file2.txt
-rw-r--r-- 1 wljslmz wljslmz 24 Sep 12 20:08 file3.txt
-rw-r--r-- 1 wljslmz wljslmz 10 Sep 19 18:58 file4.txt
$
您可以使用--diff或dflag 來查找 tar 存檔中的文件與文件系統中的文件之間的任何更改,這是一個示例,該示例diff在 tar 内部和外部的文件相同時運行一次。更新文件後,它再次運行以顯示輸出的差異。
$ tar dvf archive.tar file4.txt
file4.txt
$
$ echo newline > file4.txt
$
$ tar dvf archive.tar file4.txt
file4.txt
file4.txt: Mod time differs
file4.txt: Size differs
$
創建 tar 存檔時可能需要排除特定文件,這可以通過--exclude标志來實現。
$ tar --exclude="dir/file2.txt" --exclude="dir/file-new*.txt" -cvzf archive.tar.gz dir/
dir/
dir/file1.txt
dir/file3.txt
$ ls -l dir
total 24
-rw-r--r-- 1 wljslmz wljslmz 9 Sep 19 19:10 file-new.txt
-rw-r--r-- 1 wljslmz wljslmz 9 Sep 19 19:10 file-new2.txt
-rw-r--r-- 1 wljslmz wljslmz 5 Sep 19 19:20 file-new3.txt
-rw-r--r-- 1 wljslmz wljslmz 5 Sep 19 19:27 file1.txt
-rw-r--r-- 1 wljslmz wljslmz 6 Sep 19 19:27 file2.txt
-rw-r--r-- 1 wljslmz wljslmz 8 Sep 19 19:27 file3.txt
$ tar tvf archive.tar.gz
drwxr-xr-x wljslmz/wljslmz 0 2021-09-19 19:30 dir/
-rw-r--r-- wljslmz/wljslmz 5 2021-09-19 19:27 dir/file1.txt
-rw-r--r-- wljslmz/wljslmz 8 2021-09-19 19:27 dir/file3.txt
$
從上面的輸出中可以看出,我們可以--exclude多次指定标志以在AND條件中指定多個文件名或模式。請注意,在上例中的六個文件中dir,隻有兩個文件滿足要包含在archive.at.gz.
14、查看 tar 内容大小我們可以使用以下命令獲取壓縮 tar 存檔内容的大小:
$ tar tvf archive.tar.gz
-rw-r--r-- wljslmz/wljslmz 13 2021-09-12 20:08 file1.txt
-rw-r--r-- wljslmz/wljslmz 19 2021-09-12 20:08 file2.txt
-rw-r--r-- wljslmz/wljslmz 24 2021-09-12 20:08 file3.txt
$ tar -xzf archive.tar.gz --to-stdout|wc -c
56
$
bz2存檔類似:
$ tar tvf archive.tar.bz2
-rw-r--r-- wljslmz/wljslmz 13 2021-09-12 20:08 file1.txt
-rw-r--r-- wljslmz/wljslmz 19 2021-09-12 20:08 file2.txt
-rw-r--r-- wljslmz/wljslmz 24 2021-09-12 20:08 file3.txt
$ tar -xjf archive.tar.bz2 --to-stdout|wc -c
56
$
默認情況下,tar命令保留它正在歸檔的文件和目錄的權限,盡管您可以明确指定相同的 using-p标志或--preserve-permissions如下所示:
$ tar cvpzf archive.tar.gz *.txt
file1.txt
file2.txt
file3.txt
$
tar 長期以來一直是 Unix/Linux 系統上的有用實用程序,主要用于歸檔和備份任務,随着時間的推移,該實用程序已經發展出許多選項,它可以用于從簡單到複雜的任務,前提是您知道它提供的功能。
本文介紹了您可以使用tar命令執行的一些基本操作,并展示了它如何幫助您完成日常系統管理任務。
請參閱其手冊頁man tar或使用tar --help或tar --usage命令以獲取更多詳細信息。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!