Linuxにおける「アーカイブと圧縮」手法について(その1)

プログラミング
スポンサーリンク

アーカイブと圧縮

複数のファイルやディレクトリをまとめたファイルのことをアーカイブと呼びます。

ファイルに多くある冗長性を使い、データ内容を壊すことなくファイルサイズを小さくすることを圧縮と呼びます。

windowsやMacは、アーカイブと圧縮を同時に行います。

Linuxでは、アーカイブしてから圧縮します。

tarがアーカイブコマンドで、gzipとbzip2が圧縮コマンドとして使われています。

ブレース展開「{}」

連番のリストを生成できます。

書き方
{開始値..終了値}

touch file-{1..5}.txt
結果
file-1.txt、file-2.txt、file-3.txt、file-4.txt、file-5.txtが作られます。

ブレース内をカンマで区切ることで文字列リストを生成できます。

書き方
{文字列1,文字列2,文字列3}

echo sample.{txt,log,dat}
結果
sample.txt、sample.log、sample.datが表示されます。

tarコマンド

tarは、複数のファイルやディレクトリを1つのアーカイブファイルにまとめます。

また、アーカイブファイルから元のファイルを取り出すために利用します。

tarコマンドで作成するアーカイブファイルには慣習として.tarという拡張子を付けます。

アーカイブファイルの作り方

書き方
tar cf アーカイブファイル アーカイブ元ファイルパス

tar cf dir1.tar dir1

cはcreateを意味し、新しくアーカイブファイルを作成します。

fはファイルを意味し、アーカイブファイルとして、新しく作成するアーカイブファイル名を指定します。

tarコマンドのオプションは、- (ハイフン)を付けても付けなくてもOKです。

tarコマンドではオプションにハイフンを付けないことが普通の書き方です。

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

書き方
tar tf アーカイブファイル

tar tf dir1.tar
結果
dir1/file-1.txt
dir1/file-2.txt
dir1/file-3.txt

tオプションをつけると、アーカイブファイルの中に含まれるファイル一覧が出力されます。

アーカイブの展開

書き方
tar xf アーカイブファイル

tar xf dir1.tar
結果
lsコマンドでdir1を確認すると、、、
dir1/file-1.txt、dir1/file-2.txt、dir1/file-3.txt

xはextract(引き抜く)のxを表しています。

tarで展開された場合、同じファイル名があれば上書きされるので注意しましょう。

ファイルリストを表示する(Vオプション)


tar cvf dir2.tar dir1
結果
dir2/
dir2/file-1.txt
dir2/file-2.txt

tオプションでのアーカイブファイル確認でvオプションを併用すると、ファイル名・パーミッション・

オーナーなどファイル属性が合わせて表示されます。

vオプションは、エラーが発見しにくくなるため、tオプションとの併用以外ではおすすめできません。

ファイル属性の保持

tarコマンドは、ファイルのパーミッションなどファイル属性もそのままアーカイブします。

cpコマンドよりバックアップ用途に優れています。

gzipコマンド

ファイルの圧縮・展開を行うためのコマンドです。

慣習として.gzという拡張子を付けます。

ファイルを圧縮する

書き方
gzip 圧縮元ファイル

gzip ps.txt・・・14キロバイト
結果
ps.txt .gz・・・3キロバイト

gzipコマンド実行後には圧縮ファイルだけが残り、元のファイルは削除されます。

圧縮ファイル名は、元のファイル名の後ろに.gzを付けたファイル名になります。

圧縮ファイルを展開する


gzip -d ps.txt.gz・・・3キロバイト
結果
ps.txt・・・14キロバイト

展開されたファイルのみが残り、圧縮ファイルは削除されます。

gzip -dの代わりに、gunzipで代用可能です。

標準出力にgzipファイルを出力する

gzipの出力をパイプやリダイレクトで扱いたいときには、-cオプションを指定します。


gzip -c ps.txt > ps_test.txt.gz
結果
ps.txt ps_test.txt.gz

gzipコマンドの出力は、ファイルが圧縮したバイナリーデータです。

-cオプションを利用するときは直接ターミナルに表示せず、必ずパイプやリダイレクトを利用してください。

tarコマンドで圧縮・展開も一緒に行う。

tarコマンドだけでtar+gzファイル(アーカイブ+圧縮)を作ることができます。

zオプションを使います。


tar czf dir2.tar.gz dir2
結果
アーカイブと圧縮がされたdir2.tar.gzファイルができる。

また、tar+gzファイルを直接展開するには、xオプションとzオプションを合わせて指定します。


tar xzf dir2.tar.gz
結果
展開されたdir2ができる。

コメント

タイトルとURLをコピーしました