【LPIC基礎学習】ファイルとディレクトリの圧縮と展開について

ファイル2 LPIC1 学習記録

はじめに(このページの目的)

この記事は、LPICレベル1学習中の筆者が、AIに解説してもらった内容と実際に学習した記録をまとめたものです。
Linuxのファイルとディレクトリの圧縮と展開について、手を動かしながら理解を深めます。
記事の最後に、学習して気づいた点や感想を添えます。

作業前の確認ポイント

– 本記事はLinux環境(Rocky Linuxなど)が動作するPCまたは仮想環境を前提とします。
– 基本的なファイル操作コマンド(ls、cd、mkdir、rmなど)の知識があると理解しやすいです。
– ファイル圧縮と展開は作業用ディレクトリで行い、重要なデータを直接操作しないよう注意します。

実施手順

ステップ1:圧縮と展開とは何か

圧縮とは、ファイルやディレクトリの内容をまとめてサイズを小さくする処理です。
展開とは、圧縮ファイルを元の状態に戻す処理です。
Linuxではtar(アーカイブ作成)やgzip(単一ファイル専用の圧縮)、zip(複数ファイル・ディレクトリ対応の圧縮)などのコマンドが使われます。
ディレクトリごと圧縮したい場合は、tarでアーカイブ化した後にgzipやbzip2で圧縮する方法が一般的です。

ステップ2:基本的な使い方

# gzipで単一ファイルを圧縮
gzip sample.txt

# zipでディレクトリを圧縮
zip -r archive.zip mydir

# tarとgzipを組み合わせてディレクトリを圧縮
tar -czvf archive.tar.gz mydir

# tar.gzファイルを展開
tar -xzvf archive.tar.gz

gzipコマンドは、単一ファイルを圧縮するためのコマンドです(ディレクトリには直接使えません)。
zipコマンドは、ファイルやディレクトリをまとめて圧縮できます。
tarはアーカイブ作成を行い、-zオプションを付けるとgzip圧縮も同時に行います。

ステップ3:背景・覚え方・勘違い例

gzipは「単一ファイル専用」であり、ディレクトリを直接指定するとエラーになります。
ディレクトリをまとめたいときは、tarで1つのアーカイブにしてからgzip圧縮するのが定番です。
zipはWindowsとの互換性が高く、異なる環境間でのファイル受け渡しにも便利です。

ステップ4:注意点・落とし穴

gzipは圧縮後に元のファイルを削除するため、元データを残したい場合は-kオプションを使います。
tarは展開先ディレクトリを間違えると、意図しない場所に大量のファイルが展開されることがあります。
zipでは-rオプションを付け忘れると、ディレクトリ内の内容が圧縮されません。

実践してみよう(練習問題)

# 1. 練習用ディレクトリを作成
mkdir testdir

# 2. ファイルを作成
echo "sample text" > testdir/file1.txt

# 3. gzipでファイルのみ圧縮(失敗例としてディレクトリ指定も試す)
gzip testdir/file1.txt
gzip testdir   # これはエラーになる

# 4. zipでディレクトリを圧縮
zip -r testdir.zip testdir

# 5. tar.gz形式でディレクトリを圧縮
tar -czvf testdir.tar.gz testdir

# 6. 展開用ディレクトリを作成
mkdir extracted

# 7. 圧縮ファイルを展開
tar -xzvf testdir.tar.gz -C extracted

gzipは単一ファイルの圧縮専用、zipは複数ファイルやディレクトリを圧縮可能です。
tarはアーカイブ化と圧縮を組み合わせて柔軟に使えます。

接続確認とトラブルシューティング

エラー例 原因 対策
gzip: testdir is a directory — ignored gzipはディレクトリを直接圧縮できない tarでアーカイブ化してからgzipする
tar: Cannot open: Permission denied 書き込み権限がない sudoを使うか、権限のある場所で実行
zip: nothing to do! -rオプションなしでディレクトリ指定 -rオプションを付ける

補足情報まとめ

コマンド 意味 主なオプション
gzip 単一ファイルを圧縮 -d(展開)、-k(元ファイル保持)
zip ファイルやディレクトリをまとめて圧縮 -r(再帰的にディレクトリを圧縮)
tar アーカイブ作成・展開 -c(作成)、-x(展開)、-z(gzip圧縮)、-v(詳細表示)、-f(ファイル指定)、-C(展開先指定)
mkdir ディレクトリ作成 -p(階層作成)
echo 文字列表示・書き込み なし(標準出力が基本)

まとめ

  • gzipは単一ファイル専用、ディレクトリは直接圧縮できない。
  • ディレクトリを圧縮するならzipまたはtar+gzipを使う。
  • オプションの付け忘れや展開先の指定ミスに注意する。

参考リンク

学習してみた感想(筆者コメント)

gzipは万能だと思っていましたが、単一ファイル専用という制限があることを知りました。
zipとtarの役割を整理できたことで、用途に応じて正しく選択できる自信がつきました。
今後はbzip2やxzも試して、圧縮率や速度の違いを比較してみたいです。