在 Linux 中壓縮和解壓文件的 16 個 Tar 命令

Tar 是一個命令行工具,用於在 Linux 和 Unix 系統中創建和操作歸檔文件。 Tar 命令創建 .tar 存檔文件,然後使用 gzip 或 bzip2 進行壓縮。

您可以使用一個命令創建單個存檔壓縮文件以獲取 .tar.gz 文件或 .tar.bz2 文件。 tar 命令也可用於提取歸檔文件。

讓我們通過一些實際示例來看看實際的 tar 命令。

1) 創建 .tar 存檔文件

要創建未壓縮的 tar (.tar) ,請在 tar 命令中使用 -c 選項,如下所示:

$ tar -cvf /path/to/foo.tar /path/to/foo/

其中“/path/to/foo.tar”是生成的 tar 文件的位置,“/path/to/foo”是用作輸入的文件或目錄的位置。

例子

$ tar -cvf powerlog.tar powerlog
a powerlog
$ ls
powerlog powerlog.tar

您可以使用絕對路徑而不是相對路徑,如 example.

2) 使用 tar 創建一個 .gz 存檔

創建一個的命令語法 .gz 帶有 tar 的存檔是:

$ tar -czvf /path/to/foo.tgz /path/to/foo/

其中’/path/to/foo.tgz’是目標壓縮文件,’/path/to/foo/’是要壓縮的源目錄或文件。

3) 創建一個 .bz2 存檔

選項 -j 用於處理 .bz2 檔案。

$ tar -cjvf /path/to/foo.tgz /path/to/foo/

4) 創建 .gz 存檔並排除

我們用 --exclude tar 選項以排除特定擴展名或文件擴展名列表。 語法類似於以下內容:

$ tar -czvf /path/to/foo.tgz --exclude=*.{jpg,gif,png,wmv,flv,tar.gz,zip} /path/to/foo/.

5)在壓縮時使用沒有絕對路徑的tar

當使用 tar 壓縮文件並提供絕對路徑時,壓縮文件的元數據中將包含完整路徑,因此當您提取內容時,它將位於與傳遞的絕對路徑類似的目錄中。 為了避免這種情況,添加一個 . 在命令的末尾。

$ tar -zcvf /path/to/foo.tgz -C/path/to/foo .

6) tar 以特定字母開頭的所有文件

為當前目錄中以“i”開頭的所有內容創建一個 tar 存檔。

# tar -cvf fullbackup.tar i*
install.log
install.log.syslog

7) 將新文件附加到現有的 tar 存檔

附加文件或將新文件添加到現有的 tar 存檔。

# tar --append --file=backup.tar anaconda-ks.cfg

上述命令將在 backup.tar 存檔中附加一個 anaconda-ks.cfg 文件

8) 使用 concatenate 選項添加兩個存檔文件

# tar --concatenate --file=backup.tar fullbackup.tar

上述命令將 fullbackup.tar 的內容添加到 backup.tar 存檔中。

9) 解壓 .tar 存檔文件

提取通常具有擴展名的未壓縮存檔 .tar,命令語法為:

$ tar -xvf /path/to/foo.tar

其中 /path/to/foo.tar 是 tar 文件位置的絕對/相對路徑。 例如

$ tar -xvf powerlog.tar 
x powerlog/

10) 提取 .gz 檔案

提取一個 .gz 存檔,我們使用命令語法:

$ tar -xzvf /path/to/foo.tgz

其中 ‘/path/to/foo.tgz’ 是壓縮文件的絕對或相對路徑。

11) 提取 .bz2 存檔

提取一個的命令語法 .bz2 存檔是

$ tar -xjvf /path/to/foo.bz2

請注意,您可以傳遞 .tgz 文件,只要它是用 -j 選項。 Tar 將自動檢測格式並解壓縮它。

12) 在指定目錄中提取 .tar

要將 tar 存檔解壓縮到特定目錄,請使用 -C 提供目標目錄的選項。

$ tar -xvf /path/to/foo.tar -C /path/to/destination/

13) 從 tar 存檔中提取文件

以下命令提取“backup.tar”存檔中的“anaconda-ks.cfg”文件。

# tar --extract -vv --occurrence --file=./backup.tar anaconda-ks.cfg
-rw-r--r-- root/root 766 2008-04-12 06:52:42 anaconda-ks.cfg

14) 列出 .gz 檔案的內容

假設您只想查看一個 .tgz 文件而不提取它們,您將使用命令語法:

$ tar -ztvf /path/to/foo.tgz

只需將 ‘/path/to/foo.tgz’ 替換為 .tgz 文件的正確路徑

15) 列出.bz2 存檔文件的內容

如果您只想查看內容 .bz2 存檔而不解壓,使用命令:

$ tar -jtvf /path/to/foo.tgz

16) 使用 tar 命令保留符號鏈接

使用焦油 -cvhf 在生成 tar 存檔時保留我的符號鏈接(為此使用選項“h”)。

結論

很難記住 tar 命令的所有選項。 下面是常用的 tar 選項列表。

- j : 用於通過 bzip2 過濾存檔。
- v : 以詳細模式運行命令以顯示存檔文件的進度。
- f : 指定存檔文件名。
- W : 用於驗證存檔文件。
- z : 通過 gzip 工具過濾存檔。
- t : 用於查看存檔文件的內容。
-c :創建一個包含指定項目的新存檔。
-r :用於使用文件或目錄附加或更新現有存檔
-t :列出標準輸出上存檔的內容。
-u : 與 -r 類似,但僅當新條目的修改日期比存檔中的相應條目更新時才會添加新條目。
-x : 將存檔文件解壓縮到磁盤。

對於所有 tar 操作,該實用程序會以 0 成功,以及 >0 如果發生錯誤。 如果您將 tar 與腳本一起使用,理解這一點很重要。

我希望您喜歡閱讀有關 tar 命令的本教程。 請在下面的評論部分留下您的建議。

另請閱讀:

  • 如何在 Tar 命令中保留符號鏈接