目錄
什麼是存檔文件?
tar 命令基礎操作
必需的操作選項
常用選項
創建存檔文件
基本創建命令
權限要求
查看存檔內容
提取存檔內容
基本提取命令
權限處理
壓縮存檔
支持的壓縮算法
創建壓縮存檔示例
驗證壓縮存檔內容
提取壓縮存檔
獨立壓縮工具
查看壓縮文件信息
常用命令總結
注意事項
什麼是存檔文件?
存檔文件是包含多個文件的單個常規文件或設備文件,可用於創建可管理的個人備份,或者在其他方法(如 rsync)不可用時簡化通過網絡傳輸文件的任務。在 Linux 系統中,tar 實用程序是用於創建、管理和提取存檔的常用命令。
存檔文件可以使用或不使用壓縮:
- 不使用壓縮:僅將多個文件打包成一個文件,大小基本不變
- 使用壓縮:通過壓縮算法減小存檔文件體積
tar 命令基礎操作
必需的操作選項
執行 tar 操作需要以下命令操作之一:
-c或--create:創建存檔文件-t或--list:列出存檔的內容-x或--extract:提取存檔
常用選項
-v或--verbose:顯示在 tar 操作期間存檔或提取的文件-f或--file:指定要創建或打開的存檔文件名-p或--preserve-permissions:提取時保留原始文件權限--xattrs:啓用擴展屬性支持,存儲擴展的文件屬性--selinux:啓用 SELinux 上下文支持,存儲 SELinux 文件上下文
創建存檔文件
基本創建命令
要使用 tar 命令創建存檔,使用 create 和 file 選項,並將存檔文件名作為第一個參數,後跟要納入存檔的文件和目錄列表。
tar -cf mybackup.tar myapp1.log myapp2.log myapp3.log
重要特性:
tar命令可識別絕對和相對文件名語法- 默認情況下,
tar從絕對文件名中刪除前導正斜槓 (/) 字符,使用相對路徑名在內部存儲文件 - 這種技術更為安全,因為使用相對路徑名存檔文件時,可以將文件提取到新目錄而不會覆蓋現有文件
權限要求
用户必須具有被歸檔的目標文件的讀取權限。例如,在 /etc 目錄中創建歸檔需要 root 特權,因為只有特權用户才能讀取所有 /etc 文件。
查看存檔內容
使用 tar 命令的 t 選項可列出通過 f 選項指定的存檔中的文件名:
tar -tf /root/etc.tar
文件是使用相對名稱語法列出的,因為在存檔創建期間刪除了前導的正斜槓。
提取存檔內容
基本提取命令
tar -xf /root/etc.tar
最佳實踐:將 tar 存檔提取到空白目錄中,以免覆蓋現有的文件。
權限處理
- 當 root 用户提取存檔時,提取的文件會保留原始的用户和組所有權
- 如果是常規用户提取文件,則該用户將成為所提取文件的所有者
- 從存檔中提取文件時,當前的 umask 用於修改提取的每個文件的權限
- 使用
tar命令的p選項可保留提取的文件的原始存檔權限
tar -xpf /home/user/myscripts.tar
壓縮存檔
支持的壓縮算法
tar 命令支持多種壓縮方式:
- gzip 壓縮(選項:
-z)
- 最快的舊方法,跨平台廣泛使用
- 生成
.tar.gz或.tgz後綴
- bzip2 壓縮(選項:
-j)
- 可創建較小的存檔,但使用不如 gzip 廣泛
- 生成
.tar.bz2後綴
- xz 壓縮(選項:
-J)
- 更新的技術,提供的壓縮率在可用方法中最好
- 生成
.tar.xz後綴
創建壓縮存檔示例
# 使用 gzip 壓縮
tar -czf /root/etcbackup.tar.gz /etc
# 使用 bzip2 壓縮
tar -cjf /root/logbackup.tar.bz2 /var/log
# 使用 xz 壓縮
tar -cJf /root/sshconfig.tar.xz /etc/ssh
驗證壓縮存檔內容
創建存檔後,使用 tar 命令的 tf 選項來驗證其內容。列出壓縮存檔文件時,不需要指定壓縮選項,因為壓縮類型是從存檔標頭中讀取的:
tar -tf /root/etcbackup.tar.gz
提取壓縮存檔
tar 命令可以自動確定使用的壓縮方式,因此不需要指定壓縮選項:
tar -xf /root/etcbackup.tar.gz
注意:如果包含了不正確的壓縮類型,tar 將報告指定的壓縮類型與文件的類型不匹配。
獨立壓縮工具
gzip、bzip2 和 xz 算法也作為獨立命令實施,用於在不創建歸檔的前提下壓縮單個文件。但這些命令不允許在創建的單個壓縮文件中包含多個文件。
查看壓縮文件信息
gzip 和 xz 命令提供了 -l 選項,可用於查看壓縮的單個文件或歸檔文件的未壓縮大小:
gzip -l file.tar.gz
xz -l file.xz
在解壓縮或提取文件之前,使用此選項來驗證是否有足夠的可用空間。
常用命令總結
|
操作類型
|
命令示例
|
説明
|
|
僅歸檔
|
|
創建不壓縮的歸檔文件
|
|
查看歸檔
|
|
查看歸檔內容(必須加f)
|
|
提取歸檔
|
|
提取歸檔文件
|
|
gzip壓縮歸檔
|
|
使用gzip壓縮並創建歸檔
|
|
bzip2壓縮歸檔
|
|
使用bzip2壓縮並創建歸檔
|
|
xz壓縮歸檔
|
|
使用xz壓縮並創建歸檔
|
|
解壓gzip歸檔
|
|
解壓gzip壓縮的歸檔
|
|
解壓bzip2歸檔
|
|
解壓bzip2壓縮的歸檔
|
|
解壓xz歸檔
|
|
解壓xz壓縮的歸檔
|
注意事項
- 壓縮效果:任何壓縮算法的效用都取決於被壓縮數據的類型。之前已壓縮的數據文件(如圖片格式或 RPM 文件)通常不會進一步大幅壓縮。
- 文件覆蓋:如果目標目錄中存在與所請求存檔同名的文件,則
tar命令會覆蓋這個文件。 - 權限保留:對於超級用户,
--preserve-permissions選項默認為啓用。 - 傳統語法:
tar命令依舊支持不使用短劃線 (-) 字符的傳統選項樣式,但為保持命令一致性,建議改用短選項或長選項樣式。