Categories: Linux

Brotli 無損壓縮工具安裝與使用教學

介紹如何在 Linux 中安裝與使用 Brotli 這個開放原始碼的無損壓縮工具。

Brotli 是一個開放原始碼的無損壓縮工具(詳細介紹請參考維基百科),其壓縮率(compression ratio)在目前通用型壓縮方法中算是比較好的,速度與 deflate 方法相近但是有更好的壓縮率。關於 Brotli 壓縮演算法的標竿測試(benchmark),可以參考以下網站:

以下介紹在 Linux 環境下,Brotli 壓縮工具的安裝與使用方式;若在 Windows 系統中要使用 Brotli 壓縮或解壓縮檔案,可以使用 PeaZip 這個開放原始碼的壓縮工具。

安裝 Brotli 壓縮工具

若在 Ubuntu Linux 中,可以使用 apt 安裝 brotli 套件:

# 安裝 brotli 套件(Ubuntu)
sudo apt install brotli

若在 CentOS Linux 中,則可使用 yum 安裝 brotli 套件:

# 安裝 brotli 套件(CentOS)
sudo yum install brotli

亦可下載 Brotli 的原始碼,自行以 CMake 編譯並安裝:

# 下載 brotli 原始碼
git clone https://github.com/google/brotli.git

# 以 CMake 編譯並安裝 brotli
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release ../brotli/
make -j8
sudo make install

壓縮

brotli 壓縮工具的參數使用方式跟標準的 gzip 非常類似,不過 brotli 在壓縮檔案時,預設會保留原始檔案。

# 以 Brotli 壓縮檔案
brotli MyFile.txt

這裡的 MyFile.txt 檔案經過 brotli 壓縮之後,就會產生一個檔名為 MyFile.txt.br 的壓縮檔案。

若希望在壓縮之後自動將原始檔案刪除,可以加上 --rm 參數:

# 以 brotli 壓縮檔案(刪除原始檔案)
brotli --rm MyFile.txt

壓縮輸出檔名

brotli 所產生的壓縮檔案名稱預設的後綴是 .br,若要更改可以使用 --suffix 參數指定新的後綴,例如:

# 設定壓縮檔名後綴為 .b
brotli --suffix=.b MyFile.txt

若只壓縮單一檔案,可以使用 --output 參數指定輸出壓縮檔案的名稱:

# 設定壓縮檔名為 MyFile.br
brotli --output=MyFile.br MyFile.txt

壓縮層級

若要指定 brotli 的壓縮層級(compression level),可以使用 --quality 參數來指定,可用的壓縮層級是 011,數字越大代表壓縮率越高,但是壓縮速度越慢。

# 設定壓縮層級為 5
brotli --quality=5 MyFile.txt

若是指定 09 的,也可以直接以數字參數的方式指定:

# 設定壓縮層級為 5
brotli -5 MyFile.txt

若要以最高壓縮層級來壓縮,可以直接使用 --best 參數:

# 設定壓縮層級為最高(11)
brotli --best MyFile.txt

解壓縮

若要解壓縮 Brotli 格式的壓縮檔,可以使用 --decompress 參數:

# 解壓縮 Brotli 壓縮檔
brotli --decompress MyFile.txt.br

串流

若要將壓縮或解壓縮結果輸出至標準輸出(standard output),可以加上 --stdout 參數:

# 壓縮後輸出至標準輸出
brotli --stdout MyFile.txt > MyFile.br

解壓縮後的資料也可以輸出至標準輸出:

# 解壓縮後輸出至標準輸出
brotli --decompress --stdout MyFile.txt.br

Brotli 搭配 tar 壓縮目錄

若要以 Brotli 壓縮一整個目錄,可以先用 tar 先把整個目錄打包後,交給 brotli 壓縮:

# Brotli 搭配 tar 壓縮目錄
tar cf - MyFolder | brotli -o MyFolder.tar.br -

解壓縮時則是先以 brotli 解壓縮後,再交給 tar 解開目錄:

# Brotli 搭配 tar 解壓縮目錄
brotli -dc MyFolder.tar.br | tar xf -
Share
Published by
Office Guide

Recent Posts

Python 使用 PyAutoGUI 自動操作滑鼠與鍵盤

本篇介紹如何在 Python ...

1 年 ago

Ubuntu Linux 以 WireGuard 架設 VPN 伺服器教學與範例

本篇介紹如何在 Ubuntu ...

1 年 ago

Linux 網路設定 ip 指令用法教學與範例

本篇介紹如何在 Linux 系...

1 年 ago

Linux 以 Cryptsetup、LUKS 加密 USB 隨身碟教學與範例

介紹如何在 Linux 系統中...

1 年 ago