linux 高效壓縮工具之xz的壓縮解壓使用

鋼鐵俠的知識庫發表於2023-01-29

xz是什麼

高壓縮率的工具,它使用 LZMA2 壓縮演算法,生成的壓縮檔案比傳統使用的 gzip、bzip2 生成的壓縮檔案更小,
不過xz也有一個壞處就是壓縮時間比較長,比7z壓縮時間還長一些。不過壓縮主要用於歸檔,不介意的可以忽略。
擅長壓縮文字和日誌檔案,針對這塊的壓縮率,是目前我發現效率最高的,沒有之一。

語法結構:

xz [選項] [引數]

主要引數說明:

  • -z --compress # 強制壓縮
  • -d --decompress # 解壓縮
  • -t --test # 測試壓縮檔案的完整性
  • -k --keep # 壓縮或解壓時保持原始檔不被刪除
  • -l --list # 列出有關.xz檔案的資訊
  • -0~9 # 指定壓縮率,預設為6;
  • -h --help # 顯示這個簡潔的幫助並退出
  • -H --long-help # 顯示更多幫助(還列出了高階選項)
  • -V --version # 顯示版本號並退出

有些作業系統可以沒有自帶,需要執行yum install xz自行安裝一下。
記得先裝epel源yum install epel-release

壓縮和解壓案例

壓縮使用

首先使用dd生成一個大檔案,再使用xz壓縮看效果

[root@VM-0-13-centos ~]# dd if=/dev/zero of=test.jpg bs=1M count=1024
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 0.588149 s, 1.8 GB/s
[root@VM-0-13-centos ~]# xz test.jpg
[root@VM-0-13-centos ~]# ll -h
total 596K
-rw-r--r-- 1 root root 153K Jan 29 18:11 test.jpg.xz

可以看到已經對test.jpg檔案進行壓縮,格式如上。

解壓使用

解壓test.jpg.xz使用-d引數,如果保留原始檔可以加-k

[root@VM-0-13-centos ~]# xz -dk test.jpg.xz 
[root@VM-0-13-centos ~]# ll -h test*
-rw-r--r-- 1 root root 1.0G Jan 29 18:11 test.jpg
-rw-r--r-- 1 root root 153K Jan 29 18:11 test.jpg.xz

可以看到壓縮檔案被保留了。

額外用法

使用引數 -l 顯示 .xz 檔案的基本資訊。基本資訊包括壓縮率、資料完整性驗證方式等。

[root@VM-0-13-centos ~]# xz -l test.jpg.xz 
Strms  Blocks   Compressed Uncompressed  Ratio  Check   Filename
    1       1    152.7 KiB  1,024.0 MiB  0.000  CRC64   test.jpg.xz

使用xzcat對已壓縮日誌直接檢視,再grep過濾關鍵資訊,或xzgrep直接過濾也行,省去再解壓步驟。

[root@VM-0-13-centos ~]# xz -k /root/wechatbot/bin/nohup.out
[root@VM-0-13-centos ~]# cd /root/wechatbot/bin/
[root@VM-0-13-centos bin]# ll
total 38456
-rw-r--r-- 1 root root      92 Dec 10 12:06 config.json
-rw------- 1 root root  674304 Jan 29 18:33 nohup.out
-rw------- 1 root root   83000 Jan 29 18:32 nohup.out.xz
[root@VM-0-13-centos bin]# xzcat nohup.out.xz |grep "18:29"
2023/01/27 18:29:02 RetCode:0  Selector:0
2023/01/27 18:29:27 RetCode:0  Selector:0
2023/01/27 18:29:52 RetCode:0  Selector:0
2023/01/28 09:18:29 RetCode:0  Selector:0
2023/01/28 18:29:06 RetCode:0  Selector:0
2023/01/28 18:29:31 RetCode:0  Selector:0
2023/01/28 18:29:56 RetCode:0  Selector:0

---- 鋼鐵俠的知識庫 2023.01.29

總結

以上就是xz壓縮解壓常見用法,工作中一般會寫指令碼對日誌進行定時壓縮,
有需要檢視關鍵報錯內容的時候使用xzgrep即可,無需再解壓,非常方便。

想了解更多xz --helpxz -H,或官網:https://tukaani.org/xz/

相關文章