0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Linux ファイル圧縮 / 解凍 / アーカイブ チートシート

Last updated at Posted at 2025-02-04

はじめに

データのサイズを小さくする処理を 圧縮 と言う。単一のファイルに対して行われる。

複数のファイルやディレクトリを1つのファイルにまとめる処理を アーカイブ と言う。アーカイブされたファイルのデータサイズは、元のファイルと変わらない(アーカイブに圧縮処理は含まれない)。

「圧縮」と「アーカイブ」は別の概念だが、実際には アーカイブされたファイルは圧縮される ことも多く、一般的に「圧縮ファイル」と言うとアーカイブされたものを指すことがある。

$ tar コマンドでは -z オプションをつけることで、圧縮とアーカイブを同時に行う。

圧縮

圧縮形式に対応する拡張子は以下の通り。

  • $ gzip.gz
  • $ bzip2.bgz
  • $ xz.xz

$ gzip / $ bzip2 / $ xz

$ gzip よりも $ bzip2 の方が、$ bzip2 よりも $ xz の方が圧縮効率が高いが、処理時間が長い。

ファイルを圧縮する(元ファイルは削除される)
$ gzip ファイル名
$ bzip2 ファイル名
$ xz ファイル名
元ファイルを残す
$ xz -k ファイル名

-c で圧縮ファイル(ストリーム)を標準出力に出力することができる。パイプ|) と リダイレクト>)を組み合わせると、元ファイルを残しながら圧縮することができる。

ファイルを圧縮する(元ファイルを残す)
$ gzip -c 元ファイル名 > 圧縮ファイル名
$ bzip2 -c 元ファイル名 > 圧縮ファイル名
$ xz -c 元ファイル名 > 圧縮ファイル名
ディレクトリ内のファイルをすべて圧縮する(アーカイブはしない)
$ gzip -r
$ bzip2 -r
$ xz -r
ファイルを解凍する
$ gzip -d 圧縮ファイル名
$ bzip2 -d 圧縮ファイル名
$ xz -d 圧縮ファイル名

$ gunzip / $ bunzip2 / $ unxz

ファイルを解凍する
$ ungzip 圧縮ファイル名
$ bunzip2 圧縮ファイル名
$ unxz 圧縮ファイル名

$ zgrep / $ bzgrep / $ xzgrep

圧縮ファイル専用の grep コマンド。

圧縮ファイル内の文字列を検索する
$ zgrep "検索文字列" 圧縮ファイル名
$ bzgrep "検索文字列" 圧縮ファイル名
$ xzgrep "検索文字列" 圧縮ファイル名

$ zcat / $ bzcat / $ xzcat

圧縮ファイル専用の $ cat コマンド。

圧縮ファイルを閲覧する
$ zcat 圧縮ファイル名
$ bzcat 圧縮ファイル名
$ xzcat 圧縮ファイル名

アーカイブ

  • $ tar
  • $ cpio

$ tar

-v (verbose)オプションで処理中の状態が出力される。

アーカイブを作成する(create)
$ tar -cv ファイル1 ファイル2
ファイル名を指定してアーカイブを作成する(file)
$ tar -cvf アーカイブファイル名 ファイル1 ファイル2
$ tar -cvf アーカイブファイル名 ファイル1 ファイル2 ディレクトリ  # ディレクトリもアーカイブ可能

tar コマンドのオプションは、GNU tar では - を省略可能 だが、BSD tar(macOS など)では - が必要な場合がある

ただし、オプション f- をつけて -f とした場合に限っては、直後の文字が引数扱いになってしまうため、f をオプションの末尾にする必要がある。

オプション f- をつける場合、 f はオプションの末尾に記述する

動作しない
$ tar -fc アーカイブファイル名 ファイル1 ファイル2
動作する
$ tar -cvf アーカイブファイル名 ファイル1 ファイル2
$ tar fvc アーカイブファイル名 ファイル1 ファイル2 # ハイフンなしなら順番は関係ない
$ tar cvfアーカイブファイル名 ファイル1 ファイル2 # スペースを開けなくても動作する
圧縮したアーカイブを作成する
$ tar -zvf 圧縮アーカイブファイル名 ファイル1 ファイル2  # gzip
$ tar -jvf 圧縮アーカイブファイル名 ファイル1 ファイル2  # bzip2
$ tar -Jvf 圧縮アーカイブファイル名 ファイル1 ファイル2  # xz
圧縮したアーカイブを解凍・展開する(extract)
$ tar -xvzf 圧縮アーカイブファイル  # gzip(.tar.gz)
$ tar -xvjf 圧縮アーカイブファイル  # bzip2(.tar.bz2)
$ tar -xvJf 圧縮アーカイブファイル  # xz(.tar.xz)
アーカイブの内容を閲覧する(table)
$ tar -tvf アーカイブファイル
圧縮されたアーカイブの内容を閲覧する
$ tar -tvzf 圧縮アーカイブファイル  # gzip(.tar.gz)
$ tar -tvjf 圧縮アーカイブファイル  # bzip2(.tar.bz2)
$ tar -tvJf 圧縮アーカイブファイル  # xz(.tar.xz)

$ cpio

$ tar と似ているが 標準入力・標準出力 を使ってデータを処理するのが特徴。

を組み合わせるとアーカイブ(.cpio)を作成できる。

標準入力からアーカイブを作成する(out)
$ find . -type f | cpio -o > アーカイブファイル
アーカイブを展開する(input)
$ cpio -i < アーカイブファイル
$ cpio -id < アーカイブファイル # アーカイブ内のサブディレクトリを展開時に自動で生成する
アーカイブの内容を閲覧する(table)
$ cpio -t < アーカイブファイル
ファイルをディレクトリ構造ごと別の場所へコピーする(pass-through)
$ find . -type f | cpio -p ディレクトリ  # ディレクトリの存在が前提
$ find . -type f | cpio -pd ディレクトリ # 必要に応じてディレクトリを作成(推奨)

圧縮形式を調べる

ファイルの種類を判別する
$ file ファイル
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?