🥶

Linuxさんでファイルをまとめたり、小さくしたり~tarコマンド~

2021/01/12に公開

はじめに

くーばねてすをやっつけるためにLinuxさんと仲良くさせていただいているが、Linuxさんでもファイルをまとめるアーカイブ処理とファイルを小さくする圧縮処理ができるそうだ。
Windowsのzipファイルと何が違うの?

概要

■アーカイブファイルと圧縮ファイル
■ファイルをアーカイブする~tarコマンド~
■tarコマンドオプションまとめ
をまとめた^^

■アーカイブファイルと圧縮ファイル

アーカイブとは複数のファイルやディレクトリをまとめたファイルのことをという。
このようなアーカイブファイルを小さくすることが圧縮という。多くのファイルには冗長性がある為データを壊すことなくファイルを圧縮することができる。

WindowsやMacのzipファイルではアーカイブと圧縮を同時に行うがLinuxさんではアーカイブと圧縮を個別に行う。
アーカイブする為にtarコマンド
圧縮する為にgzipコマンド、bzipコマンドを使う。

■ファイルをアーカイブする~tarコマンド~

tarコマンドは複数のファイルやディレクトリをアーカイブしたり、逆にアーカイブファイルから元のファイルを取り出すときに使う。
テスト用のディレクトリとファイルを作成する。

$ mkdir testdir
$ touch dir/file_{1..5}.txt

一瞬まとめ

{開始値..終了値}

というブレース展開で連番のリストを作成した!
またブレース展開では文字列を,で区切ることで文字列の展開もできる。

$ mkdir testdir
$ touch test.{txt,log,dat}
test.txt test.iog test.dat

以上(>_<)
ではファイルをアーカイブする。

ファイルをアーカイブする書式
$  tar cf アーカイブファイル アーカイブ元ファイルパス

cfってのはクリエイトファイルのことらしい。

$ tar cf testdir.tar testdir

作成した!
アーカイブファイルの中身を参照する

アーカイブファイルを参照
$ tar tfアーカイブファイル
$ tar tf testdir.tar
./
./file_1.txt
./file_2.txt
./file_3.txt
./file_4.txt
./file_5.txt

ちゃんとはいってる!
アーカイブファイルを展開する

アーカイブファイルと展開する
$ tar xf アーカイブファイル

ちゃんとアーカイブファイルが展開されるのか元のファイルを消してから確認する。

$ rm -r testdir
$ tar xf testdir.tar
$ ls testdir.tar
.  ..  file_1.txt  file_2.txt  file_3.txt  file_4.txt  file_5.txt

戻ってる!

tarコマンド注意点

tarコマンドでは単にファイルをコピーするだけでなく、ファイルの権限やオーナー、タイムスタンプなどファイルの属性そのままがアーカイブされる。なので単にcpコマンドでコピーするよりもバックアップにむいている。
しかし読み込み権限がついていないファイルではアーカイブしても元の属性が復元できず不完全な展開になってしまうこともあるので注意する。

■tarコマンドオプションまとめ

ちなみにtarコマンドでは色んな深い歴史があったようでオプションに-はいらない。
|オプション|意味|
| --- | --- | --- |
|cf アーカイブファイル|アーカイブファイルを作成する|
|xf アーカイブファイル|アーカイブファイルを展開する|
|v アーカイブファイル|ファイル一覧を表示する|
|t アーカイブファイル|ファイル属性一覧を表示する|
もちろん cvf ようにオプションは組み合わせて使えることができる。
t や vオプションはエラーメッセージが埋もれてしまうので併用しないほうがいいそうだ。

まとめ

すっごいさむい!

Discussion