LoginSignup
1

More than 3 years have passed since last update.

Linuxのアーカイブと圧縮(tar と gzip)

Posted at

アーカイブと圧縮

複数のファイルやディレクトリをまとめたファイルのことをアーカイブ(書庫)と呼ぶ。

また、アーカイブするときにアーカイブファイルのサイズを小さくすることができれば、ファイルを転送・保存するときのデータ量を抑えることができる。

この小さくする処理を圧縮と呼ぶ。

ファイルをアーカイブする

ファイルをアーカイブするためにLinuxではtarコマンドを使用する。

↓練習用ファイルの作成

$ mkdir dir1
$ touch dir1/file-{1..5}.txt

↓確認

$ ls dir1
file-1.txt file-2.txt file-3.txt file-4.txt file-5.txt

アーカイブファイルの作成

↓書式

cはcreateの意味で、新しくアーカイブファイルを作成する時に指定する。
fはfileの意味で、新しく作成するアーカイブファイル名を指定するために必ず必要

tar cf <アーカイブファイル> <アーカーブのファイルパス>

↓dir1ディレクトリをアーカイブする

$ tar cf dir1.tar dir

※tarコマンドは歴史的経緯から引数に-を付けない。ただし-を付けても同じ挙動になる。

アーカイブファイルの内容確認

↓書式

tはlistの意味。
fはfileの意味で、新しく作成するアーカイブファイル名を指定するために必ず必要

tar tf <アーカイブファイル> <アーカーブのファイルパス>

↓内容を確認

$ tar tf dir1.tar
dir1/
dir1/file-1.txt
dir1/file-2.txt
dir1/file-3.txt
dir1/file-4.txt

アーカイブの展開

アーカイブファイルを展開して元のファイルやディレクトリを取り出すには、xオプションを利用する。

書式

xはextract(抜く、抜き取る)のxを表す。

tar xf <アーカイブファイル>

↓アーカイブを展開する

アーカイブから元のファイルが復元できるかどうか確かめるために、dir1ディレクトリをいったん削除してからアーカイブを展開する。

$ ls
dir1  dir1.tar

$ rm -rf dir1          ←元のディレクトリ削除
$ tar xf dir1.tar      ←アーカイブを展開
$ ls dir1              ←確認
file-1.txt  file-2.txt  file-3.txt  file-4.txt

ファイルを圧縮する

gxipコマンド

gzipはファイルの圧縮・展開を行うためのコマンドである。
gzipで圧縮したファイルには慣習として、.gzという拡張子を付ける。

書式

$ gzip <圧縮元ファイル>

下記はテスト用として、psコマンドでプロセス一覧を表示した結果をps.txtというファイルに出力リダイレクトして作成したものである。
ps.txtのファイルサイズは約9.6キロバイトある。

$ ps aux > ps.txt
$ ls -lh
-rw-rw-r--. 1 vagrant vagrant  9.6K May  7 19:07 ps.txt

gzipコマンドで圧縮してみる

$ gzip ps.txt
$ ls -lh
-rw-rw-r--. 1 vagrant vagrant 2.3K May  7 19:07 ps.txt.gz

ご覧の通り約2.3キロバイトに圧縮された。
また、ps.txt.gzという(圧縮された)新しいファイルが残り、元のps.txtというファイルが削除される

圧縮ファイルを展開してみる。

圧縮ファイルを展開するためには、-dオプションを指定する必要がある。

$ gzip -d ps.txt.gz
$ ls -lh
-rw-rw-r--. 1 vagrant vagrant 9.6K May  7 19:07 ps.txt

この時も、圧縮時と同様に展開されたファイルのみが残り、圧縮ファイルは削除される

その他のファイルを圧縮するコマンド

gzipコマンド以外にもファイルを圧縮するコマンドがある。

bzip2コマンド

特徴として、gzip形式よりも圧縮率が高く、データ量をより小さくできる。ただし、圧縮・展開にかかる時間はgzipより長いため、時間よりファイルサイズを重視する場合に使われることが多い。

zipコマンド

zipはtarやgzipと違ってあーカーブと圧縮を同時に行う。なので、複数のファイルやディレクトリをまとめて一つのファイルに圧縮できる
なお、zipコマンドは標準ではインストールされていないので、使用するにはインストールする必要がある。

参考

新しいLinuxの教科書

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
What you can do with signing up
1