如何在 Linux 中創(chuàng)建和管理歸檔文件
簡而言之,歸檔是一個包含一系列文件和(或)目錄的單一文件慨蓝。歸檔文件通常用于在本地或互聯(lián)網(wǎng)上傳輸覆山,或作為一個一系列文件和目錄的備份副本竹伸,從而允許你使用一個文件來工作(如果壓縮,則其大小會小于所有文件的總和)簇宽。同樣的勋篓,歸檔也用于軟件應用程序打包。為了方便傳輸魏割,可以很容易地壓縮這個單一文件譬嚣,而存檔中的文件會保留原始結(jié)構(gòu)和權(quán)限。
我們可以使用 tar
工具來創(chuàng)建钞它、列出和提取歸檔中的文件拜银。用 tar
生成的歸檔通常稱為“tar 文件”殊鞭、“tar 歸檔”或者“壓縮包”(因為所有已歸檔的文件被合成了一個文件)。
本教程會展示如何使用 tar
創(chuàng)建尼桶、列出和提取歸檔中的內(nèi)容操灿。這三個操作都會使用兩個公共選項 -f
和 -v
:使用 -f
指定歸檔文件的名稱,使用 -v
(“冗余”)選項使 tar
在處理文件時輸出文件名泵督。雖然 -v
選項不是必需的趾盐,但是它可以讓你觀察 tar
操作的過程。
在本教程的下面部分中小腊,會涵蓋 3 個主題:1救鲤、創(chuàng)建一個歸檔文件;2秩冈、列出歸檔文件內(nèi)容蜒简;3、提取歸檔文件內(nèi)容漩仙。另外我們會回答歸檔文件管理的 6 個實際問題來結(jié)束本教程搓茬。你從本教程學到的內(nèi)容對于執(zhí)行與網(wǎng)絡安全和云技術(shù)相關的任務至關重要。
1队他、創(chuàng)建一個歸檔文件
要使用 tar
創(chuàng)建一個歸檔文件卷仑,使用 -c
(“創(chuàng)建”)選項,然后用 -f
選項指定要創(chuàng)建的歸檔文件名麸折。通常的做法是使用帶有 .tar
擴展名的名稱锡凝,例如 my-backup.tar
。注意垢啼,除非另有特別說明窜锯,否則本文其余部分中使用的所有命令和參數(shù)都以小寫形式使用。記住芭析,在你的終端上輸入本文的命令時锚扎,無需輸入每個命令行開頭的 $
提示符。
輸入要歸檔的文件名作為參數(shù)馁启;如果要創(chuàng)建一個包含所有文件及其子目錄的歸檔文件驾孔,提供目錄名稱作為參數(shù)盗痒。
要歸檔 project
目錄內(nèi)容歪赢,輸入:
$ tar -cvf project.tar project
這個命令將創(chuàng)建一個名為 project.tar
的歸檔文件廉丽,包含 project
目錄的所有內(nèi)容舍扰,而原目錄 project
將保持不變篮条。
使用 -z
選項可以對歸檔文件進行壓縮辞友,這樣產(chǎn)生的輸出與創(chuàng)建未壓縮的存檔然后用 gzip
壓縮是一樣的帝璧,但它省去了額外的步驟滥壕。
要從 project
目錄創(chuàng)建一個 project.tar.gz
的壓縮包蒿偎,輸入:
$ tar -zcvf project.tar.gz project
這個命令將創(chuàng)建一個 project.tar.gz
的壓縮包朽们,包含 project
目錄的所有內(nèi)容克伊,而原目錄 project
將保持不變。
注意: 在使用 -z
選項時华坦,你應該使用 .tar.gz
擴展名而不是 .tar
擴展名愿吹,這樣表示已壓縮。雖然不是必須的惜姐,但這是一個很好的實踐犁跪。
gzip 不是唯一的壓縮形式,還有 bzip2 和 xz歹袁。當我們看到擴展名為 .xz
的文件時坷衍,我們知道該文件是使用 xz
壓縮的,擴展名為 .bz2
的文件是用 bzip2
壓縮的条舔。隨著 bzip2 不再維護枫耳,我們將遠離它而關注 xz。使用 xz
壓縮時孟抗,需要花費更長的時間迁杨。然而,等待通常是值得的凄硼,因為壓縮效果要好的多铅协,這意味著壓縮包通常比使用其它壓縮形式要小。更好的是摊沉,不同壓縮形式之間的解壓縮或提取文件并沒有太大區(qū)別狐史。下面我們將看到一個使用 tar
壓縮文件時如何使用 xz 的示例:
$ tar -Jcvf project.tar.xz project
我們只需將 gzip
的 -z
選項轉(zhuǎn)換為 xz
的大寫 -J
即可。以下是一些輸出说墨,顯示壓縮形式之間的差異:
如你所見骏全,xz
的壓縮時間最長。但是尼斧,它在減小文件大小方面做的最好姜贡,所以值得等待。文件越大突颊,壓縮效果也越好鲁豪。
2潘悼、列出歸檔文件的內(nèi)容
要列出 tar 歸檔文件的內(nèi)容但不提取律秃,使用 -t
選項。
要列出 project.tar
的內(nèi)容治唤,輸入:
$ tar -tvf project.tar
這個命令列出了 project.tar
歸檔的內(nèi)容棒动。-v
和 -t
選項一起使用會輸出每個文件的權(quán)限和修改時間,以及文件名宾添。這與 ls
命令使用 -l
選項時使用的格式相同船惨。
要列出 project.tar.gz
壓縮包的內(nèi)容柜裸,輸入:
$ tar -tzvf project.tar.gz
3粱锐、從歸檔中提取內(nèi)容
要提攘场(解壓)tar 歸檔文件中的內(nèi)容恶座,使用 -x
(“提取”)選項。
要提取 project.tar
歸檔的內(nèi)容自点,輸入:
$ tar -xvf project.tar
這個命令會將 project.tar
歸檔的內(nèi)容提取到當前目錄桂敛。
如果一個歸檔文件被壓縮溅潜,通常來說它的擴展名為 .tar.gz
或 .tgz
伟恶,請包括 “-z” 選項博秫。
要提取 project.tar.gz
壓縮包的內(nèi)容,輸入:
$ tar -zxvf project.tar.gz
注意: 如果當前目錄中有文件或子目錄與歸檔文件中的內(nèi)容同名巴碗,那么在提取歸檔文件時橡淆,這些文件或子目錄將被覆蓋逸爵。如果你不知道歸檔中包含哪些文件凹嘲,請考慮先查看歸檔文件的內(nèi)容周蹭。
在提取歸檔內(nèi)容之前列出其內(nèi)容的另一個原因是,確定歸檔中的內(nèi)容是否包含在目錄中显拳。如果沒有搓萧,而當前目錄中包含許多不相關的文件矛绘,那么你可能將它們與歸檔中提取的文件混淆货矮。
要將文件提取到它們自己的目錄中,新建一個目錄喧锦,將歸檔文件移到該目錄燃少,然后你就可以在新目錄中提取文件阵具。
FAQ
現(xiàn)在我們已經(jīng)學習了如何創(chuàng)建歸檔文件并列出和提取其內(nèi)容定铜,接下來我們可以繼續(xù)討論 Linux 專業(yè)人員經(jīng)常被問到的 9 個實用問題揣炕。
可以在不解壓縮的情況下添加內(nèi)容到壓縮包中嗎畸陡?
很不幸,一旦文件將被壓縮曹动,就無法向其添加內(nèi)容仁期。你需要解壓縮或提取其內(nèi)容竭恬,然后編輯或添加內(nèi)容痊硕,最后再次壓縮文件。如果文件很小理逊,這個過程不會花費很長時間晋被,否則請等待一會羡洛。
可以在不解壓縮的情況下刪除歸檔文件中的內(nèi)容嗎欲侮?
這取決壓縮時使用的 tar 版本威蕉。較新版本的 tar
支持 -delete
選項韧涨。
例如氓奈,假設歸檔文件中有 file1
和 file2
舀奶,可以使用以下命令將它們從 file.tar
中刪除:
$ tar -vf file.tar –delete file1 file2
刪除目錄 dir1
:
$ tar -f file.tar –delete dir1/*
壓縮和歸檔之間有什么區(qū)別育勺?
查看歸檔和壓縮之間差異最簡單的方法是查看其解壓大小涧至。歸檔文件時南蓬,會將多個文件合并為一個赘方。所以窄陡,如果我們歸檔 10 個 100kb 文件跳夭,則最終會得到一個 100kb 大小的文件币叹。而如果壓縮這些文件,則最終可能得到一個只有幾 kb 或接近 100kb 的文件颈抚。
如何壓縮歸檔文件九妈?
如上所說雾鬼,你可以使用帶有 cvf
選項的 tar
命令來創(chuàng)建和歸檔文件晶疼。要壓縮歸檔文件翠霍,有兩個選擇:通過壓縮程序(例如 gzip
)運行歸檔文件寒匙,或在使用 tar
命令時使用壓縮選項锄弱。最常見的壓縮標志 -z
表示 gzip
,-j
表示 bzip
祸憋,-J
表示 xz
会宪。例如:
$ gzip file.tar
或者,我們可以在使用 tar
命令時使用壓縮標志蚯窥,以下命令使用 gzip
標志 z
:
$ tar -cvzf file.tar /some/directory
如何一次創(chuàng)建多個目錄和/或文件的歸檔掸鹅?
一次要歸檔多個文件塞帐,這種情況并不少見。一次歸檔多個文件和目錄并不像你想的那么難巍沙,你只需要提供多個文件或目錄作為 tar 的參數(shù)即可:
$ tar -cvzf file.tar file1 file2 file3
或者
$ tar -cvzf file.tar /some/directory1 /some/directory2
創(chuàng)建歸檔時如何跳過目錄和/或文件葵姥?
你可能會遇到這樣的情況:要歸檔一個目錄或文件,但不是所有文件赎瞎,這種情況下可以使用 --exclude
選項:
$ tar –exclude ‘/some/directory’ -cvf file.tar /home/user
在示例中牌里,/home/user
目錄中除了 /some/directory
之外都將被歸檔喳篇。將 --exclude
選項放在源和目標之前炊邦,并用單引號將要排除的文件或目錄引起來,這一點很重要。
總結(jié)
tar
命令對展示不需要的文件創(chuàng)建備份或壓縮文件很有用。在更改文件之前備份它們是一個很好的做法。如果某些東西在更改后沒有按預期正常工作,你始終可以還原到舊文件。壓縮不再使用的文件有助于保持系統(tǒng)干凈,并降低磁盤空間使用率沼侣。還有其它實用程序可以歸檔或壓縮轧膘,但是 tar
因其多功能、易用性和受歡迎程度而獨占鰲頭熔任。
資源
如果你想了解有關 Linux 的更多信息夯巷,強烈建議閱讀以下文章和教程:
- Linux 文件系統(tǒng)架構(gòu)和管理綜述
- Linux 文件和目錄系統(tǒng)工作原理的全面回顧
- 所有 Linux 系統(tǒng)發(fā)行版的綜合列表
- 特殊用途 Linux 發(fā)行版的綜合列表
- Linux 系統(tǒng)管理指南 – 制作和管理備份操作的最佳實踐
- Linux 系統(tǒng)管理指南 – Linux 虛擬內(nèi)存和磁盤緩沖區(qū)緩存概述
- Linux 系統(tǒng)管理指南 – 監(jiān)控 Linux 的最佳實踐
- Linux 系統(tǒng)管理指南 – Linux 啟動和關閉的最佳實踐
關于作者
Matt Zand 是一位創(chuàng)業(yè)者,也是 3 家科技創(chuàng)業(yè)公司的創(chuàng)始人: DC Web Makers、Coding Bootcamps 和 High School Technology Services梳码。他也是 使用 Hyperledger Fabric 進行智能合約開發(fā) 一書的主要作者濒蒋。他為 Hyperledger焰坪、以太坊和 Corda R3 平臺編寫了 100 多篇關于區(qū)塊鏈開發(fā)的技術(shù)文章和教程。在 DC Web Makers,他領導了一個區(qū)塊鏈專家團隊,負責咨詢和部署企業(yè)去中心化應用程序送淆。作為首席架構(gòu)師阐斜,他為編碼訓練營設計和開發(fā)了區(qū)塊鏈課程和培訓項目。他擁有馬里蘭大學工商管理碩士學位唧喉。在區(qū)塊鏈開發(fā)和咨詢之前,他曾擔任一些初創(chuàng)公司的高級網(wǎng)頁和移動應用程序開發(fā)和顧問忍抽、天使投資人和業(yè)務顧問鸠项。你可以通過以下這個網(wǎng)址和他取得聯(lián)系: https://www.linkedin.com/in/matt-zand-64047871。
Kevin Downs 是 Red Hat 認證的系統(tǒng)管理員和 RHCSA讲坎。他目前在 IBM 擔任系統(tǒng)管理員鲸郊,負責管理數(shù)百臺運行在不同 Linux 發(fā)行版上的服務器喳资。他是編碼訓練營的首席 Linux 講師,并且他會講授 5 個自己的課程腾供。
via: https://www.linux.com/news/how-to-create-and-manage-archive-files-in-linux-2/
作者:LF Training 選題:lujun9972 譯者:MjSeven 校對:wxy
本文由 LCTT 原創(chuàng)編譯仆邓,Linux中國 榮譽推出
轉(zhuǎn)自 https://linux.cn/article-13126-1.html