如何在 Linux 上使用 tar 命令壓縮和提取文件

已發表: 2022-07-23

壓縮的 Tarball 標頭 Ubuntu

Linux 上的 tar 命令通常用於創建 .tar.gz 或 .tgz 存檔文件,也稱為“tarball”。 這個命令有很多選項,但是你只需要記住幾個字母就可以用 tar 快速創建檔案。 tar 命令也可以提取生成的檔案。

Linux 發行版中包含的 GNU tar 命令集成了壓縮。 它可以創建一個 .tar 存檔,然後在單個命令中使用 gzip 或 bzip2 壓縮對其進行壓縮。 這就是生成的文件是 .tar.gz 文件或 .tar.bz2 文件的原因。

更新,22 年 7 月 18 日:我們已經審查了這篇文章的準確性,並且可以確認它仍然適用於最新版本的 Ubuntu 和其他 Linux 發行版。

壓縮整個目錄或單個文件

使用以下命令在 Linux 上壓縮整個目錄或單個文件。 它還將壓縮您指定的目錄中的所有其他目錄——換句話說,它以遞歸方式工作。

 tar -czvf name-of-archive.tar.gz /path/to/directory-or-file

以下是這些開關的實際含義:

  • -c :創建檔案。
  • -z:使用 g z ip 壓縮存檔。
  • -v:在終端顯示創建存檔的進度,也稱為“ v erbose”模式。 v 在這些命令中始終是可選的,但它很有幫助。
  • -f :允許您指定存檔的文件名。

假設您在當前目錄中有一個名為“stuff”的目錄,並且您希望將其保存到名為archive.tar.gz 的文件中。 您將運行以下命令:

 tar -czvf archive.tar.gz 的東西

或者,假設在當前系統的 /usr/local/something 中有一個目錄,您想將它壓縮成一個名為 archive.tar.gz 的文件。 您將運行以下命令:

 tar -czvf archive.tar.gz /usr/local/something 

在所需文件夾上運行“tar -czvf”以捆綁並壓縮所有內容。

一次壓縮多個目錄或文件

相關:如何從 Linux 終端管理文件:您需要知道的 11 個命令

雖然 tar 經常用於壓縮單個目錄,但您也可以使用它來壓縮多個目錄、多個單獨的文件,或兩者兼而有之。 只需提供文件或目錄的列表而不是單個。 例如,假設您要壓縮 /home/ubuntu/Downloads 目錄、/usr/local/stuff 目錄和 /home/ubuntu/Documents/notes.txt 文件。 您只需運行以下命令:

 tar -czvf archive.tar.gz /home/ubuntu/Downloads /usr/local/stuff /home/ubuntu/Documents/notes.txt

只需列出要備份的目錄或文件即可。

Ubuntu 終端使用“tar”命令一次壓縮多個目錄。

排除目錄和文件

在某些情況下,您可能希望壓縮整個目錄,但不包括某些文件和目錄。 您可以通過為要排除的每個目錄或文件附加--exclude開關來做到這一點。

例如,假設您要壓縮 /home/ubuntu,但不想壓縮 /home/ubuntu/Downloads 和 /home/ubuntu/.cache 目錄。 以下是你的做法:

 tar -czvf archive.tar.gz /home/ubuntu --exclude=/home/ubuntu/Downloads --exclude=/home/ubuntu/.cache

--exclude開關非常強大。 它不需要目錄和文件的名稱——它實際上接受模式。 你可以用它做更多的事情。 例如,您可以使用以下命令歸檔整個目錄並排除所有 .mp4 文件:

 tar -czvf archive.tar.gz /home/ubuntu --exclude=*.mp4 

可以調整“tar”命令以選擇性地忽略某些文件。

改用 bzip2 壓縮

雖然 gzip 壓縮最常用於創建 .tar.gz 或 .tgz 文件,但 tar 也支持 bzip2 壓縮。 這允許您創建 bzip2 壓縮文件,通常命名為 .tar.bz2、.tar.bz 或 .tbz 文件。 為此,只需將此處命令中用於 gzip 的 -z 替換為用於 bzip2 的 -j。

Gzip 更快,但它通常壓縮得更少,因此您會得到一個更大的文件。 Bzip2 速度較慢,但它壓縮得更多,因此您會得到一個更小的文件。 Gzip 也更常見,一些精簡的 Linux 系統默認支持 gzip,但不支持 bzip2。 不過,一般來說,gzip 和 bzip2 實際上是相同的東西,並且兩者的工作方式相似。

例如,您可以運行以下命令,而不是我們提供的用於壓縮 stuff 目錄的第一個示例:

 tar -cjvf archive.tar.bz2 東西

終端運行 bzip2 壓縮而不是 gzip。

提取檔案

一旦你有了一個存檔,你可以用 tar 命令解壓它。 以下命令會將archive.tar.gz 的內容提取到當前目錄。

 tar -xzvf 存檔.tar.gz

它與我們上面使用的存檔創建命令相同,只是-x開關替換了-c開關。 這指定您要擴展檔案而不是創建檔案。

您可能希望將存檔的內容提取到特定目錄。 您可以通過將-C開關附加到命令末尾來執行此操作。 例如,以下命令會將 archive.tar.gz 文件的內容提取到 /tmp 目錄。

 tar -xzvf 存檔.tar.gz -C /tmp

如果該文件是 bzip2 壓縮文件,請將上述命令中的“z”替換為“j”。

使用“-xzvf”而不是“-czvf”參數運行“tar”以從 tarball 存檔中提取文件。


這是 tar 命令最簡單的用法。 該命令包含大量附加選項,因此我們不可能在此處將它們全部列出。 了解更多信息。 在 shell 中運行info tar命令可以查看 tar 命令的詳細信息頁面。 完成後按q鍵退出信息頁面。 您也可以在線閱讀 tar 的手冊。

如果您使用的是圖形 Linux 桌面,您還可以使用桌面隨附的文件壓縮實用程序或文件管理器來創建或提取 .tar 文件。 在 Windows 上,您可以使用免費的 7-Zip 實用程序提取和創建 .tar 檔案。

相關:適合開發人員和愛好者的最佳 Linux 筆記本電腦