tarメモ

まったりとLFS中です。LFSの基本は

ダウンロード → 解凍 → コンパイル

を繰り返す。つまり、一番使うコマンド郡はwget,tar,make。


今回は、理解の足らないtarついて調べようと思う。

tarとは

tarは"Tape ARchive" の略。って、いつの時代から使われているんだ・・・。

元々は、「複数のファイルをまとめて tar 形式というアーカイブファイルにする機能」がメイン。

つまり、catよりちょっと凄い奴。圧縮解凍機能はおまけ。

よく使うコマンド

.tar.gzの解凍

% tar xzf hoge.tar.gz

これだけ覚えておけば生きていける。

簡単なオプション

x 解凍
c 圧縮
なし .tar
z .tar.gzip形式
j .tar.bz2形式
v 詳細オプション有効
f ファイル指定。必ず最後に付ける。必修

manを見ると、

コピペ。

tar <operation> [options]

Operations:
[-]A --catenate --concatenate
[-]c --create
[-]d --diff --compare
[-]r --append
[-]t --list
[-]u --update
[-]x --extract --get
--delete

Common Options:
-C, --directory DIR
-f, --file F
-j, --bzip2
-p, --preserve-permissions
-v, --verbose
-z, --gzip

オプションは英語で覚えるとわかりやすい。

tarをハックする。

ちょっと遊んでみる。

まずは、tar -cfでまとめる。

% cat hoge.txt
ほげほげ
% cat moge.txt
もげもげ
% tar -cf hoge.tar hoge.txt moge.txt

catで覗いてみる。

% cat hoge.tar
hoge.txt0000644000076400007640000000001510644073041012024 0ustar  tanakatanakaほげほげ
moge.txt0000644000076400007640000000001510644072552012037 0ustar  tanakatanakaもげもげ

tarは小さなファイルシステムのような役割をしているようだ。ユーザー名が入っているので、怪しいファイルを配布するときは、注意しよう(笑

もうちょっと詳しく。

% od -t xz hoge.tar
0000000 65676f68 7478742e 00000000 00000000  >hoge.txt........<
0000020 00000000 00000000 00000000 00000000  >................<
*
0000140 00000000 30303030 00343436 30303030  >....0000644.0000<
0000160 00343637 30303030 00343637 30303030  >764.0000764.0000<
0000200 30303030 00353130 34363031 33373034  >0000015.10644073<

こう見ると、ファイルシステムそのものですねぇ。

これ以上はソースを見た方が良いね。

まとめ

  • tarはテープレコーダーが由来なので、fオプションは必修。
  • tar -xzfがあれば生きていける。
  • tarは小さなファイルシステムのようだ。

tarとgzipの機能が分かれているというのはUNIXらしい考え方だと思う。

参考