next up previous contents
Next: ファイルの検索 find (俺のファイルはどこだ) Up: その他の基本命令 Previous: バックグラウンドで実行bg/fg/jobs


文字列の表示 echo

この命令はテープアーカイバtarと読みます。 その昔,いや現在もですが 大容量のテープに保存用として複数の書き込む命令でした。 Tape Archiver の頭文字をとって付けられています。 アーカイバは古くなった文書という意味です。 現在は複数のファイルやディレクトリをまとめてテープではなく 1つのファイル(書庫ファイル)にまとめる時に使用されますが, フロッピーに保存することもできます。

この命令は,次のように用います。 % tar [key] [-C dir] file .....

[key] は tarの動作を決める部分で以下の文字のうちの1つです。

c : 新しい書庫を作成します。
r : 指定されたファイルを書庫の最後に書き加えます。
t : 書庫の中のファイル名を表示します。
u : 指定されたファイルがすでに書庫の中にある同じものよりも新しい時だけ 書庫の最後に書き加えます。
x : 指定されたファイル書庫から取り出します。 指定されたファイルがディレクトリであった場合、 そのディレクトリの下の内容も再帰的に取り出されます。

このキーに次の文字を付けることができます。

f : 次の引数をアーカイブ名として使用します。このファイル名が `-' である 場合、 tar は標準出力に書き出すかまたは標準入力から読み込みます。
h : 通常 tar はシンボリックリンクはリンクのまま扱います。 この修飾子により、 シンボリックリンクを通常のファイルやディレクトリであるかのように扱 います。
v : 通常tar は処理の途中経過を表示しません。 この修飾子によりtar は、 実行する機能文字とともに各ファイルの名前を表示します。
z : gzipで圧縮した書庫を扱います。
M : フロッピーなど決まった容量に出力する時複数のファイルに分けます。
オプション-C dirを付けると,現在のディレクトリではなく dirで 書庫を展開したり作成します。

このキーの使い方が少々ややこしいので,サンプルを見ながらやってみましょう。


\begin{ChrScrn}{}
\% tar cf Mail.tar Mail/
\% ls -l Mail*
drwx-- 1 ken engn...
...22:39 MailNL
-rw-r-r- 1 ken engng 2867200 Nov 21 20:54 Mail.tar
</pre></blockquote>
<BR>

</P><P>
となりましたね。もちろん各自ではサイズは違っています。
<U><TT>cf Mail.tar</TT> </U>は,
ファイル<TT>Mail.tar</TT>を作成<TT>(c)</TT>するという意味ですので,
<TT>Mail/</TT>というディレクトリをまとめたことになります。

</P><P>
では,
% tar tf Mail.tar 
をやってみましょう。たくさん表示されて中に何が入っているのかわかりますね。
ディレクトリ情報も入っています。
このようにディレクトリごとまとめられるので,
作業ごとにディレクトリを作成しておくと便利であることが多いのです。

</P><P>
通常は,このまとめたファイルは見ることがありませんので圧縮します。
% gzip Mail.tar 
とすると,

% ls -l Mail* <BR>
drwx---   1 ken      engng         512 Jul 20 22:39 Mail
<BR>
-rw-r-r-   1 ken      engng     1137847 Nov 21 22:42 Mail.tar.gz

</P><P>
となり,元の半分以下のサイズとなるばかりか,
<TT>.gz</TT>という拡張子も付きました。
<TT>tar zcf Mail.tar.gz Mail/</TT> のように <TT>z</TT>というキーを付け
るとこの2つの``まとめる'',``圧縮する''を一度にやってしまいます。

</P><P>
逆に,圧縮された書庫に何が入っているか見るには
% tar ztf Mail.tar.gz
です。

</P><P>
この tar の便利な使い方として,
ディレクトリまるごとのコピーをする時に使います。
ディレクトリのコピーというと,
<TT>cp -r</TT> が思い浮かぶでしょうが,
cp では,リンクの情報が失われ,
ファイルがそのままコピーされるので効率良くありません。

</P><P>
<TT>somwhere/direc</TT> とディレクトリを <TT>anywhere/direc</TT> にそっくり
コピーする時には
% ( cd somewhere ; tar cf - direc/) | ( cd anywhere ; tar xf - )
とします。

</P><P>
()で囲んだ時は,現在の場所を保持したまま実行されます。
この命令は,
一時的に <TT>somewhere</TT> というディレクトリに移り,
無名のファイル ``<TT>-</TT>''に
<TT>direc</TT>をまとめます。
この無名のファイルは標準出力装置に出力されます。
そこで,その出力 ``<TT>-</TT>'' をパイプ`<TT>|</TT>'を通して送り,
<TT>anywhere</TT> に移って受けとり,
そこで展開 <TT>xf - </TT> するという意味です。

</P><P>
オプションとキーの説明を見ながら,理解できましたよね?。
 <HR>
<A NAME= next up previous contents
Next: ファイルの検索 find (俺のファイルはどこだ) Up: その他の基本命令 Previous: バックグラウンドで実行bg/fg/jobs

Kishimoto Ken
平成20年3月1日