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

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

WBOY
發布: 2024-02-12 21:12:34
轉載
1365 人瀏覽過

在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中文網其他相關文章!

來源:lxlinux.net
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板