Linuxさんでファイルをまとめたり、小さくしたり~tarコマンド~
はじめに
くーばねてすをやっつけるために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