はじめに

zip まわり(圧縮方式やコマンド)について、学習したことやリンクを用語ごとにメモする。

ライブラリ、圧縮アルゴリズム、データ形式、あたりにおいて同じ名前が縦横無尽に使われているので、分類はざっくり(重複が多い)

自分が将来、見返せる用。

圧縮アルゴリズム

用語

ファイル拡張子

  • png

    • zlib 圧縮された画像
    • つまり、圧縮アルゴリズムはdeflate
  • pdf

    • zlib 圧縮されたデータ
  • tar

    • 非圧縮でアーカイブのみ
    • UNIXメタデータ豊富保持
      • Windows/Mac で利用されにくい一方、Linuxでは便利
      • mode, uid, gid, symlink など保存可能
      • なんと、デバイスファイルも保存可能(inodeのみ)
    • 大規模、並列、ストリーム
    • pathも保存される
    • 圧縮ライブラリをリンクして使う。
      • libzstd
      • liblzma
      • zlib
  • zip

  • ar

    • 非圧縮
    • ファイルメタデータほぼなし
  • gz

    • gzip 圧縮
    • 非アーカイブ(原則、1ファイル)
  • tar.gz

    • tar を gzip 圧縮したもの

ライブラリ

  • zlib
    • 圧縮ライブラリ+データ形式
    • 圧縮ライブラリはdeflate/inflate(実質)
    • データ形式は、zlibヘッダ+deflateデータ
      • 具体
        • [zlib header][deflate compressed data][Adler-32 checksum]
    • HTTP の deflate は歴史的に zlib を指すことが多い
    • データの中に埋め込まれ、ファイルとして独立することが少ないデータ形式のため、標準の拡張子はない
  • gzip
  • zstd(libzstd)
    • 圧縮ライブラリ+データ形式
    • 高速・高圧縮・並列化に強い
    • 「アプリが直接使う」前提
    • ネットワーク・RPC・DB・ログ圧縮向き
  • xz(liblzma)
    • 圧縮ライブラリ+データ形式
    • 非常に高圧縮・CPU重い・低速
    • 「ファイルを圧縮する」前提
    • アプリ内部利用は少なめ
  • tar
    • tar ファイルを作る
    • -z オプションで、 gzip も同時に行う

Gzip Wikipediaにあった整理

Gzip Wikipediaページによいまとめがあったので引用

Gzip Table

  • アーカイブのみ
    • ar AXF BagIt(英語版) cpio LBR(英語版) shar(英語版) tar WAD WARC
  • 圧縮のみ
    • Brotli bzip2 compress gzip LZMA LZ4 lzip lzop SQ(英語版) xz Zstandard pack
  • アーカイブおよび圧縮
    • 7z ACE ARC(英語版) ARJ B1(英語版) Cabinet cfs(英語版) cpt dar(英語版) DGCA .dmg .egg(英語版) GCA kgb(英語版) LHA LZX MPQ(英語版) PEA .qda RAR rzip(英語版) sit SQX(英語版) UDA(PAQ/UDA) Xar(英語版) zoo ZIP ZPAQ
  • ソフトウェアパッケージ
    • pkg (SVR4) deb pkg (macOS) RPM RUNZ MSI JAR WAR RAR (Java) EAR XPI
  • 文書パッケージ
    • OEB Package Format OEBPS Container Format (EPUB) Open Packaging Conventions Office Open XML