Zips Command Line
之前整理過 7z 的命令行,這裡再集合整理一下 Unix 系統下其他的壓縮歸檔文件命令行。
tar
tar
命令在 Unix 系統下非常常用,它有多個壓縮率不同的版本,常見的有 tar.xz
和 tar.gz
,前者的壓縮率更高,但存在兼容性問題。
單純的 tar
後綴代表未被壓縮的 tar
文件,已壓縮的 tar
文件會再追加一個擴展名,如:
.tar.gz
縮寫為.tgz
,代表經過gzip
壓縮後的tar
文件.tbz
與.tb2
為.tar.bz2
縮寫,代表經過bzip2
壓縮的tar
文件.tar.Z
縮寫為.taz
.tar.lzma
縮寫為.tlz
.tar.xz
縮寫為.taz
,代表經過xz
壓縮的tar
文件
參數
-c, --create
:創建新的 tar 文件-x, --extract, --get
:解開 tar 文件-t, --list
:列出 tar 文件內容-r, --append
:附加新文件到 tar 文件中-u, --update
:更新 tar 文件-A, --catenate, --concatenate
:將 tar 文件作為一個整體追加到另一個 tar 文件中-d, --diff, --compare
:將文件系統中的文件與 tar 文件中的文件進行比較--delete
:刪除 tar 文件中的文件(不可用於已保存在磁帶上的 tar 文件)
Options
-v, --verbose
:列出詳細信息,使用一個v
僅列出文件名,使用兩個v
列出文件詳細信息-k, --keep-old-files
:不刪除文件系統上已有文件-f, --file
:指定要處理的文件名,可使用-
代表標準輸出或標準輸入-P, --absolute-names
:使用絕對路徑-j, --bzip2
:調用 bzip2 進行壓縮或解壓縮-J, --xz, --lzma
:調用 XZ Utils 執行壓縮或解壓縮-z, --gzip, --gunzip, --ungzip
:調用 gzip 進行壓縮或解壓縮-Z, --compress, --uncompress
:調用 compress 進行壓縮或解壓縮
gzip
gzip
代表 GNU zip,基礎是 DEFLATE。
文件格式:
- 10 字節的頭,包含幻數、版本號和時間戳
- 可選的擴展頭,如原文件名
- 文件體,包括 DEFLATE 壓縮的數據
- 8 字節的尾註,包括 CRC-32 較驗和以及未壓縮的原始數據長度
通常情況下,gzip 僅用來壓縮單個文件。多個文件壓縮歸檔時通常先將其合併成一個 tar 文檔,然後調用 gzip 進行壓縮。
ZIP 雖然也使用 DEFLATE 算法,並且可移植性更好,不需要 tar 進行歸檔,但是 ZIP 對每個文件進行單獨壓縮而不利用文件間的冗余信息,因此 ZIP 的壓縮率要低於 tar 壓縮包。
參數
-c, --stdout
:解壓縮內容輸出到標準輸出,原文件保持不變-d, --decompress
:解壓縮-f, --force
:強制覆蓋舊文件-l, --list
:列出壓縮包內儲存的原始文件信息-n, --no-name
:壓縮時不保存原始文件的文件名和時間戳,解壓縮時不恢復原始文件的文件名和時間戳(解壓縮得到的文件是壓縮包的文件名)-N, --name
:壓縮時保存原始文件的文件名和時間戳,解壓縮時恢復原始文件名和時間戳-q, --quiet
:抑制所有警告信息-r, --recursive
:遞歸-t, --test
:測試壓縮文件完整性-v, --verbose
:冗余模式(顯示每一步執行內容)-1, -2, ..., -9
:壓縮率依次增大,速度依次減慢,默認為-6
bzip2
基於數據塊排序算法,相對於 gzip,可以生成相當小的壓縮文件,但代價是 4 倍的內存和處理器時間消耗。但按照絕對壓縮效率來講,bzip2 不如 7z 和 RAR 格式。
bzip2 和 gzip 類似,只是一個數據壓縮工具,而不是歸檔工具,當進行多個文件壓縮時需要借助 tar 進行歸檔。
常用命令:
$ bzip2 file // 壓縮文件
$ bzip2 -d file.bz2 // 解壓縮文件
其餘命令行參數同 gzip 類似。
xz
與 gzip 和 bzip2 一樣,通常作為一種歸檔文件的自身壓縮格式。
xz 層有過一個名為 pxz 的分支,提供多線程壓縮功能,後來 xz 自身直接提供多線程壓縮功能。
7-Zip 以及 RAR 均支持 xz 壓縮格式。
xz 通常出現在系統源文件的壓縮中,也是 Linux 內核的格式,2013 年開始 xz 正式做為發行內核源代碼的默認格式。