首頁 系統教程 Linux 輕鬆學會Linux下的檔案打包與壓縮-全面了解tar指令

輕鬆學會Linux下的檔案打包與壓縮-全面了解tar指令

Feb 12, 2024 pm 09:12 PM
linux linux教程 linux系統 linux指令 shell腳本 嵌入式linux linux入門 linux學習

在Linux系統中,檔案打包與壓縮是極為常見且必要的操作,而tar指令便是一個功能強大的工具。它不僅可以將多個文件打包成一個文件,還可以對文件進行壓縮和解壓縮。對於Linux新手來說,熟悉tar指令是非常重要的,因為它會大大提高我們的工作效率。在本文中,我們將全面了解tar指令的使用方法,讓你輕鬆學會Linux下的檔案打包與壓縮技巧。

輕鬆學會Linux下的檔案打包與壓縮-全面了解tar指令

簡而言之,歸檔是一個包含一系列檔案和(或)目錄的單一檔案。歸檔檔案通常用於在本地或互聯網上傳輸,或作為一系列檔案和目錄的備份副本,從而允許你使用一個檔案來工作(如果壓縮,則其大小會小於所有檔案的總和)。同樣的,歸檔也用於軟體應用程式打包。為了方便傳輸,可以輕鬆壓縮這個單一文件,而存檔中的文件會保留原始結構和權限。

我們可以使用 tar 工具來建立、列出和提取歸檔中的檔案。用 tar 產生的歸檔通常稱為「tar 檔案」、「tar 歸檔」或「壓縮包」(因為所有已歸檔的檔案都合成了一個檔案)。

本教學將展示如何使用 tar 建立、列出和提取歸檔中的內容。這三個操作都會使用兩個公共選項 -f 和 -v:使用 -f 指定歸檔檔案的名稱,使用 -v(「冗餘」)選項使 tar 在處理檔案時輸出檔案名稱。雖然 -v 選項不是必需的,但它可以讓你觀察 tar 操作的過程。

在本教學的下面部分中,將涵蓋 3 個主題:1、建立一個歸檔文件;2、列出歸檔文件內容;3、提取歸檔文件內容。另外我們會回答歸檔文件管理的 6 個實際問題來結束本教學。你從本教程學到的內容對於執行與網路安全和雲端技術相關的任務至關重要。

1、建立一個歸檔檔案

要使用 tar 建立一個歸檔文件,使用 -c(「建立」)選項,然後用 -f 選項指定要建立的歸檔檔案名稱。通常的做法是使用帶有 .tar 副檔名的名稱,例如 my-backup.tar。請注意,除非另有特別說明,否則本文其餘部分中使用的所有命令和參數都以小寫形式使用。記住,在你的終端機上輸入本文的命令時,無需輸入每個命令列開頭的 $ 提示符。

輸入要歸檔的文件名稱作為參數;如果要建立一個包含所有文件及其子目錄的歸檔文件,提供目錄名稱作為參數。

要歸檔 project 目錄內容,輸入:

$ tar -cvf project.tar project
登入後複製

這個指令將創建一個名為 project.tar 的歸檔文件,包含 project 目錄的所有內容,而原始目錄 project 將保持不變。

使用 -z 選項可以對歸檔檔案進行壓縮,這樣產生的輸出與創建未壓縮的檔案然後用 gzip 壓縮是一樣的,但它省去了額外的步驟。

要從 project 目錄建立一個 project.tar.gz 的壓縮包,輸入:

$ tar -zcvf project.tar.gz project
登入後複製

這個指令將建立一個 project.tar.gz 的壓縮包,包含 project 目錄的所有內容,而原始目錄 project 將保持不變。

注意: 在使用 -z 選項時,你應該使用 .tar.gz 副檔名而不是 .tar 副檔名,這樣表示已壓縮。雖然不是必須的,但這是一個很好的實踐。

gzip 不是唯一的壓縮形式,還有 bzip2 和 xz。當我們看到擴展名為 .xz 的檔案時,我們知道該檔案是使用 xz 壓縮的,而擴展名為 .bz2 的檔案是用 bzip2 壓縮的。隨著 bzip2 不再維護,我們將遠離它並專注於 xz。使用 xz 壓縮時,需要花費更長的時間。然而,等待通常是值得的,因為壓縮效果要好的多,這意味著壓縮包通常比使用其它壓縮形式要小。更好的是,不同壓縮形式之間的解壓縮或提取檔案並沒有太大差異。下面我們將看到一個使用 tar 壓縮檔案時如何使用 xz 的範例:

$ tar -Jcvf project.tar.xz project
登入後複製

我們只需將 gzip 的 -z 選項轉換為 xz 的大寫 -J 即可。以下是一些輸出,顯示壓縮形式之間的差異:
輕鬆學會Linux下的檔案打包與壓縮-全面了解tar指令

輕鬆學會Linux下的檔案打包與壓縮-全面了解tar指令

如你所見,xz 的壓縮時間最長。但是,它在減小檔案大小方面做的最好,所以值得等待。檔案越大,壓縮效果越好。

2、列出歸檔檔案的內容

要列出 tar 歸檔檔案的內容但不提取,使用 -t 選項。

要列出 project.tar 的內容,輸入:

$ tar -tvf project.tar
登入後複製

这个命令列出了 project.tar 归档的内容。-v 和 -t 选项一起使用会输出每个文件的权限和修改时间,以及文件名。这与 ls 命令使用 -l 选项时使用的格式相同。

要列出 project.tar.gz 压缩包的内容,输入:

$ tar -tzvf project.tar.gz
登入後複製

3、从归档中提取内容

要提取(解压)tar 归档文件中的内容,使用 -x(“提取”)选项。

要提取 project.tar 归档的内容,输入:

$ tar -xvf project.tar
登入後複製

这个命令会将 project.tar 归档的内容提取到当前目录。

如果一个归档文件被压缩,通常来说它的扩展名为 .tar.gz 或 .tgz,请包括 “-z” 选项。

要提取 project.tar.gz 压缩包的内容,输入:

$ tar -zxvf project.tar.gz
登入後複製

注意: 如果当前目录中有文件或子目录与归档文件中的内容同名,那么在提取归档文件时,这些文件或子目录将被覆盖。如果你不知道归档中包含哪些文件,请考虑先查看归档文件的内容。

在提取归档内容之前列出其内容的另一个原因是,确定归档中的内容是否包含在目录中。如果没有,而当前目录中包含许多不相关的文件,那么你可能将它们与归档中提取的文件混淆。

要将文件提取到它们自己的目录中,新建一个目录,将归档文件移到该目录,然后你就可以在新目录中提取文件。

FAQ

现在我们已经学习了如何创建归档文件并列出和提取其内容,接下来我们可以继续讨论 Linux 专业人员经常被问到的 9 个实用问题。

可以在不解压缩的情况下添加内容到压缩包中吗?

很不幸,一旦文件将被压缩,就无法向其添加内容。你需要解压缩或提取其内容,然后编辑或添加内容,最后再次压缩文件。如果文件很小,这个过程不会花费很长时间,否则请等待一会。

可以在不解压缩的情况下删除归档文件中的内容吗?

这取决压缩时使用的 tar 版本。较新版本的 tar 支持 -delete 选项。

例如,假设归档文件中有 file1 和 file2,可以使用以下命令将它们从 file.tar 中删除:

$ tar -vf file.tar –delete file1 file2
登入後複製

删除目录 dir1:

$ tar -f file.tar –delete dir1/*
登入後複製

压缩和归档之间有什么区别?

查看归档和压缩之间差异最简单的方法是查看其解压大小。归档文件时,会将多个文件合并为一个。所以,如果我们归档 10 个 100kb 文件,则最终会得到一个 100kb 大小的文件。而如果压缩这些文件,则最终可能得到一个只有几 kb 或接近 100kb 的文件。

如何压缩归档文件?

如上所说,你可以使用带有 cvf 选项的 tar 命令来创建和归档文件。要压缩归档文件,有两个选择:通过压缩程序(例如 gzip)运行归档文件,或在使用 tar 命令时使用压缩选项。最常见的压缩标志 -z 表示 gzip,-j 表示 bzip,-J 表示 xz。例如:

$ gzip file.tar
登入後複製

或者,我们可以在使用 tar 命令时使用压缩标志,以下命令使用 gzip 标志 z:

$ tar -cvzf file.tar /some/directory
登入後複製

如何一次创建多个目录和/或文件的归档?

一次要归档多个文件,这种情况并不少见。一次归档多个文件和目录并不像你想的那么难,你只需要提供多个文件或目录作为 tar 的参数即可:

tar -cvzf file.tar file1 file2 file3
登入後複製

创建归档时如何跳过目录和/或文件?

你可能会遇到这样的情况:要归档一个目录或文件,但不是所有文件,这种情况下可以使用 –exclude 选项:

$ tar –exclude ‘/some/directory’ -cvf file.tar /home/user
登入後複製

在示例中,/home/user 目录中除了 /some/directory 之外都将被归档。将 –exclude 选项放在源和目标之前,并用单引号将要排除的文件或目录引起来,这一点很重要。

本文详细介绍了tar命令的使用方法和参数。通过学习,我们已经掌握了如何使用tar命令来实现文件的打包、压缩和解压缩操作。在日常工作中,熟练掌握这些技巧能够使我们更加高效地管理文件和数据,节约时间和资源。希望本文能够对您有所帮助,也希望大家能够通过实践不断提高自己的技能水平。

以上是輕鬆學會Linux下的檔案打包與壓縮-全面了解tar指令的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

vscode需要什麼電腦配置 vscode需要什麼電腦配置 Apr 15, 2025 pm 09:48 PM

VS Code 系統要求:操作系統:Windows 10 及以上、macOS 10.12 及以上、Linux 發行版處理器:最低 1.6 GHz,推薦 2.0 GHz 及以上內存:最低 512 MB,推薦 4 GB 及以上存儲空間:最低 250 MB,推薦 1 GB 及以上其他要求:穩定網絡連接,Xorg/Wayland(Linux)

vscode 無法安裝擴展 vscode 無法安裝擴展 Apr 15, 2025 pm 07:18 PM

VS Code擴展安裝失敗的原因可能包括:網絡不穩定、權限不足、系統兼容性問題、VS Code版本過舊、殺毒軟件或防火牆干擾。通過檢查網絡連接、權限、日誌文件、更新VS Code、禁用安全軟件以及重啟VS Code或計算機,可以逐步排查和解決問題。

notepad怎麼運行java代碼 notepad怎麼運行java代碼 Apr 16, 2025 pm 07:39 PM

雖然 Notepad 無法直接運行 Java 代碼,但可以通過借助其他工具實現:使用命令行編譯器 (javac) 編譯代碼,生成字節碼文件 (filename.class)。使用 Java 解釋器 (java) 解釋字節碼,執行代碼並輸出結果。

vscode是什麼 vscode是乾什麼用的 vscode是什麼 vscode是乾什麼用的 Apr 15, 2025 pm 06:45 PM

VS Code 全稱 Visual Studio Code,是一個由微軟開發的免費開源跨平台代碼編輯器和開發環境。它支持廣泛的編程語言,提供語法高亮、代碼自動補全、代碼片段和智能提示等功能以提高開發效率。通過豐富的擴展生態系統,用戶可以針對特定需求和語言添加擴展程序,例如調試器、代碼格式化工具和 Git 集成。 VS Code 還包含直觀的調試器,有助於快速查找和解決代碼中的 bug。

vscode 可以用於 mac 嗎 vscode 可以用於 mac 嗎 Apr 15, 2025 pm 07:36 PM

VS Code 可以在 Mac 上使用。它具有強大的擴展功能、Git 集成、終端和調試器,同時還提供了豐富的設置選項。但是,對於特別大型項目或專業性較強的開發,VS Code 可能會有性能或功能限制。

VSCode怎麼用 VSCode怎麼用 Apr 15, 2025 pm 11:21 PM

Visual Studio Code (VSCode) 是一款跨平台、開源且免費的代碼編輯器,由微軟開發。它以輕量、可擴展性和對眾多編程語言的支持而著稱。要安裝 VSCode,請訪問官方網站下載並運行安裝程序。使用 VSCode 時,可以創建新項目、編輯代碼、調試代碼、導航項目、擴展 VSCode 和管理設置。 VSCode 適用於 Windows、macOS 和 Linux,支持多種編程語言,並通過 Marketplace 提供各種擴展。它的優勢包括輕量、可擴展性、廣泛的語言支持、豐富的功能和版

git怎麼查看倉庫地址 git怎麼查看倉庫地址 Apr 17, 2025 pm 01:54 PM

要查看 Git 倉庫地址,請執行以下步驟:1. 打開命令行並導航到倉庫目錄;2. 運行 "git remote -v" 命令;3. 查看輸出中的倉庫名稱及其相應的地址。

Linux體系結構:揭示5個基本組件 Linux體系結構:揭示5個基本組件 Apr 20, 2025 am 12:04 AM

Linux系統的五個基本組件是:1.內核,2.系統庫,3.系統實用程序,4.圖形用戶界面,5.應用程序。內核管理硬件資源,系統庫提供預編譯函數,系統實用程序用於系統管理,GUI提供可視化交互,應用程序利用這些組件實現功能。

See all articles