ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
概要
gzip(GNU zip)は 1992 年、当時広く使われていた compress コマンドの .Z 形式が特許問題を抱えていたことを受け、その代替として Jean-loup Gailly(gzip 作者)と Mark Adler(Deflate 共同設計者)が GNU プロジェクトのために開発した、フリーで自由に使える圧縮形式です。
採用アルゴリズムは Deflate(LZ77 による辞書圧縮 + ハフマン符号)で、これは ZIP / PNG / HTTP の Content-Encoding と同じものです。Deflate そのものの仕様は RFC 1951、gzip ファイル形式は RFC 1952 で標準化されており、Web 関連の RFC との親和性が高いことから、HTTP/1.1 以降は事実上の Web 転送圧縮として広く使われています。
gzip の重要な性質は 「単一ファイルしか圧縮できない」 ことです。ZIP のように複数ファイルをまとめる機能はないため、ディレクトリを圧縮したいときは tar でひとつのストリームにまとめてから gzip に流します。これが .tar.gz や .tgz(DOS の 8.3 文字制限の名残)の正体で、Unix 系 OSS の配布アーカイブの大半がこの形式です。
内部構造とマジックナンバー
gzip ファイルの先頭 2 バイトのマジックナンバーは 1F 8B です。続いて圧縮方式(08 = Deflate)、フラグ、オリジナルのタイムスタンプ(mtime)、エクストラフラグ、OS 種別が並びます。オプションでオリジナルのファイル名(NULL 終端)や任意コメントを格納でき、末尾には CRC32(誤り検出)と ISIZE(展開後サイズの下位 32 bit)が付きます。
仕様上は複数の gzip ストリームを単純連結したものも有効で、gunzip はそれを順次展開します。これにより並列 gzip 実装である pigz はマルチスレッドで圧縮しても標準の gunzip で展開できる、という重要な互換性を担保しています。
圧縮レベルは -1(最速・低圧縮)から -9(最遅・高圧縮)まで指定可能で、デフォルトは -6。--rsyncable オプションを使うと rsync 差分が効きやすいブロック境界で圧縮するため、バックアップ用途で重宝します。
主な用途
- Web サーバの転送圧縮(HTTP
Content-Encoding: gzip、Nginx / Apache / CDN すべてが対応) tar.gzによるソースコード配布(GNU/Linux 系 OSS の大半)- サーバログの世代圧縮(
logrotateがデフォルトで gzip) - データベースダンプの保存(mysqldump の出力をパイプで gzip)
- ゲノム配列や CSV データなど、テキストベース大容量データの保管
関連形式との比較
| 形式 | 圧縮率 | 速度 | マルチスレッド | 暗号化 | 備考 |
|---|---|---|---|---|---|
| gzip | 中 | 速い | pigz で可 | なし | Web/Unix 標準 |
| bzip2 | 高い | 遅い | pbzip2 で可 | なし | 旧来の高圧縮 |
| xz (LZMA2) | 非常に高い | 非常に遅い | -T で可 | なし | カーネル配布 |
| zstd | 中〜高 | 非常に速い | -T0 で可 | なし | 新世代標準 |
| ZIP (Deflate) | 中 | 速い | 不可 | AES-256 | 同じ Deflate を使う |
コマンド・ツール
# 単一ファイルを gzip 圧縮(元ファイルは消える)
gzip access.log
# → access.log.gz が作られる
# 圧縮レベル最大で
gzip -9 huge.csv
# 元ファイルを残して圧縮
gzip -k access.log
# 展開(元の .gz は消える)
gunzip access.log.gz
# または
gzip -d access.log.gz
# 展開せず中身を見る(パイプラインで便利)
zcat access.log.gz | grep ERROR
zless access.log.gz # ページャ
zgrep '500' access.log.gz # grep
ztail access.log.gz # 環境による
# tar と組み合わせて tar.gz を作成・展開
tar czvf backup.tar.gz mydir/
tar xzvf backup.tar.gz
# mysqldump をストリーム圧縮
mysqldump -u root mydb | gzip > mydb-$(date +%F).sql.gz
# マルチスレッド圧縮(pigz)
pigz -p 8 huge.csv # 8 スレッド使用
tar c mydir/ | pigz -p 8 > backup.tar.gz
注意点・落とし穴
- 単一ファイルしか圧縮できない — フォルダごと圧縮したいなら必ず tar と組み合わせる。これを知らず「ファイル消えた」と慌てる初心者が多い。
- デフォルトで元ファイルが消える —
gzip foo.logを打つとfoo.logは無くなりfoo.log.gzだけが残る。元を残したいなら-kを付ける。 - 暗号化機能はない — 機密データを圧縮しても保護されない。必要なら GPG と組み合わせる(
gzip foo && gpg -c foo.gzなど)。 - ランダムアクセスが弱い — gzip ストリームは先頭から順に解凍しないと中身を取り出せない。巨大ログから途中の 1 行だけ高速取得したい場合は zstd の
--longモードや、bgzip / dictzip のような特殊ツールを検討する。 - 32bit の ISIZE フィールド — フッタの展開後サイズは下位 32 bit のみ。4GB 超のデータでも展開はできるが、
gzip -lで表示されるサイズが正しくない場合がある。 - HTTP gzip 圧縮の罠 — すでに圧縮済みのコンテンツ(PNG/JPEG/動画/zip)に gzip をかけても CPU を消費するだけでサイズは減らない。Nginx の
gzip_typesで text/* と application/json などに限定するのが定石。
関連リンク
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページはありません
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- UE5 の Lumen とは|リアルタイムGIの仕組みと有効化手順 NEW 2026-08-03 07:45:20
- UE5 の Lumen が暗い・反射しない|原因と確認ポイント NEW 2026-08-03 07:45:20
- UE5 のライトの種類と使い分け|Directional/Point/Spot/Rect NEW 2026-08-03 07:45:20
- UE5 の Nanite とは|有効化手順と対応条件を解説 NEW 2026-08-03 07:45:20
- UE5 の Nanite が効かない|原因と対処の切り分け NEW 2026-08-03 07:45:20
- UE5 の Nanite と LOD の違い|使い分けの指針 NEW 2026-08-03 07:45:20
- UE5 のマテリアルとマテリアルインスタンス|違いと使い分け NEW 2026-08-03 07:45:20
- UE5 のマテリアルノード|Lerp・Fresnel・Panner NEW 2026-08-03 07:45:20
- UE5 のマテリアルブレンドモード|Two Sided と選び方 NEW 2026-08-03 07:45:20
- UE5 の Enhanced Input 入門|IAとIMCの基本 NEW 2026-08-03 07:45:20
- UE5 の Enhanced Input 実装手順|BPでキー入力 NEW 2026-08-03 07:45:20
- UE5 の旧入力から Enhanced Input へ移行する手順 NEW 2026-08-03 07:45:20
- IPv6とは|128bitアドレス・コロン16進表記/::省略・リンクローカル・SLAAC・デュアルスタック 2026-06-22 12:34:44
- VPNとは|暗号トンネル・サイト間/リモートアクセス・IPsec/SSL-VPN/WireGuardを解説 2026-06-22 12:19:10
- MAC アドレスフィルタリングの仕組みと限界 | ネットワーク入門 2026-06-22 12:19:10
コメントを削除してもよろしいでしょうか?