圧縮したファイルの受け渡しをする時、最近はほとんどが zip 形式でファイルを圧縮して受け渡しをしているかと思います。zip 形式であれば受け手も解凍アプリを持っていて、圧縮したファイルを解凍出来るだろうという想像の元、ファイルの受け渡しを行っています。しかし Linux では、zip 形式より高圧縮な圧縮コマンドが沢山あります。ディスクが圧迫しているので、普段使わないファイル群を圧縮しておいたり、USBメモリに入らない大きいファイル群を圧縮して入れたり自分自身だけで使うのであれば高圧縮の圧縮形式を使った方が良いでしょう。
・zip: 現在多くのOSで標準使用されている圧縮方式
・gzip: Linux の標準圧縮方式
・bzip2: gzip より圧縮率が高く、オープンソース提供圧縮方式として多く利用されている
・xz: 圧縮率が高いが、圧縮時に時間とメモリが多く必だが解凍速度は早い
・Zstandard: zip, gzip と遜色ない圧縮をより高速に行えるように設計された。高圧縮オプションも用意されている
・7z: 高圧縮でAES-256による強力な暗号化機能を備えている。
・zip ファイルの圧縮解凍
$ zip filename.zip filename
$ zip -d filename.zip
・zip ディレクトリーの圧縮解凍
$ zip -r filename.zip dirname
$ zip -d filename.zip
・gzip ファイルの圧縮解凍
$ gzip filename
$ gzip -d filename.gz
・gzip ディレクトリーの圧縮解凍
$ tar cvfz filename.tar.gz dirname
$ tar xvfz filename.tar.gz
・bzip2 ディレクトリーの圧縮解凍
$ bzip2 filename
$ bzip2 -d filename.bz2
・bzip2 ディレクトリーの圧縮解凍
$ tar cvfj filename.bz2 dirname
$ tar xvfj filename.bz2
・xz ディレクトリーの圧縮解凍
$ xz filename
$ xz -d filename.xz
・xz ディレクトリーの圧縮解凍
$ tar cvfJ filename.xz dirname
$ tar xvfJ filename.xz
・zstd ディレクトリーの圧縮解凍
$ zstd filename
$ zstd -3 filename
$ zstd --ultra -22 filename
$ zstd -d filename.zst
・zstd ディレクトリーの圧縮解凍
$ tar cvfa filename.zst dirname
$ tar xvfa filename.zst
・7z ディレクトリーの圧縮解凍
$ 7z a filename.7z filename
$ 7z x filename.7z
・7z ディレクトリーの圧縮解凍
$ 7z a filename.7z dirname
$ 7z x filename.7z
圧縮方法については、暗号化機能や伸張速度も選択肢の一つになると思いますが、今回は圧縮率と圧縮時間に焦点をあてて紹介したいと思います。https://www.kernel.org/ から 最新の kernel linux-5.18.10.tar.xz をダウンロードして解凍して linux-5.18.10.tar をそれぞれの紹介した圧縮コマンドで圧縮したファイルのサイズと time コマンドで計測した時間(real)を 紹介します。結果は、PCのスペックや圧縮元ファイルの形式によって変わってきますが、Linux kernel の公開形式として採用されている xz が高圧縮であることが分かります。しかし、実行時にメモリリソースを多く使い実行時間もかなりかかります。筆者のお勧めは Facebook のエンジニアが 2015年にリリースした Zstandard です。Ubuntu 22.04 では zstd コマンドが標準でインストールされており、かなり市民権を得てきた気がします。圧縮スピートがとにかく早く、圧縮レベルを 1-19 まで指定でき –ultra とすると最大 22 レベルまで高圧縮することができます。時間がかかりましたが、–ultra 22 として linux-5.18.10.tar を圧縮すると時間がかかりましたが、122M と xz より圧縮率が高かったです。
linux-5.18.10.tar 1.2G
linux-5.18.10.tar.zip 198M (26秒)
linux-5.18.10.tar.gz 198M (25秒)
linux-5.18.10.tar.bz2 148M (1分12秒)
linux-5.18.10.tar.xz 124M (6分1秒)
linux-5.18.10.tar.zst 183M (6秒)
linux-5.18.10.tar.7z 126M (5分54秒)
linux-5.18.10.tar.zst 122M (12分28秒)
7z は標準でインストールされていないので以下のコマンドでインストールします。
$ sudo apt install p7zip-full