tft每日頭條

 > 圖文

 > linuxtar命令解壓怎麼用

linuxtar命令解壓怎麼用

圖文 更新时间:2025-02-07 03:19:34

linuxtar命令解壓怎麼用?tar 是 Unix 和基于 Linux 的系統中最常用的文件歸檔格式之一,今天小編就來聊一聊關于linuxtar命令解壓怎麼用?接下來我們就一起去研究一下吧!

linuxtar命令解壓怎麼用(Linux中15個最常用的tar命令)1

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 $

2、創建壓縮檔案 (GZ)

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 $

4、解壓所有文件

使用該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 $

5、列出 tar 内容

要列出 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 $

6、解壓特定文件

隻有一個文件可以從提取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 $

7、使用通配符解壓

要使用通配符提取一個或多個文件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 $

8、将文件添加到存檔

通過使用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 $

12、使用差異标志

您可以使用--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 $

13、排除文件

創建 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 $

15、保留權限

默認情況下,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每日頭條,我们将持续为您更新最新资讯!

查看全部

相关圖文资讯推荐

热门圖文资讯推荐

网友关注

Copyright 2023-2025 - www.tftnews.com All Rights Reserved