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 --help
或xz -H
,或官網:https://tukaani.org/xz/