第 7 章 基本コマンド (3)
7.7 ハードディスクの消費 , ファイルの圧縮と展開
7.7.1 df と du: ハードディスクの消費量を調べる
まず全体としてハードディスクがどのくらい使われているかを見てみましょう. このためには,コマンド dfを使います. コマンドdfの使い方は,
df
←- (7.46)
と入力するだけです.
ktermのウィンドウの中で(7.7.1)のように入力して下さい. 出力は例えば図7.11のようになります. ホー
ムディレクトリ /home/aと/home/bはそれぞれ容量が20GB程度あるのですが,高々数%しか使われてい ないことがわかります.
次に,あなたが消費しているハードディスクの容量を見ることにしましょう. このためには, duというコ マンドを使います. このコマンドの使い方も,
du
←- (7.47)
とするだけです.
ktermのウィンドウの中で, (7.7.1)の通りに入力して下さい. すると,例えば以下のような表示が得られ
ます.
7.7. ハードディスクの消費,ファイルの圧縮と展開 85
1 ./lecture
199 .
画面の左がディスク消費量,右側が実際にハードディスクを消費しているファイルやディレクトリの名前で す. 最後の行
199 . (7.48)
が全ディスク消費量です. 単位はキロバイト(kB)です.
コンピュータの世界では, データの大きさを測るのに, ビットやバイトという単位がよく使われます. 1 ビットは数0 あるいは1 が1個, 1バイトは8ビットです.
ところで, 物理量をあらわすときには 「キロ」(k)という語句は103をあらわすのですが, コンピュータ の世界では2進数が基本なので,慣習として,ハードディスクやメモリの容量,データの大きさなどを標記 するときには,「キロ」(k)という語句が,ほぼ103と等しい210(1024)という値をあらわすことになってい ます. 「メガ」(M)や「ギガ」(G)についても同様です. かくして, 1キロバイトは1024ビット, 1メガバイ トは1024キロビット, 1ギガバイトは1024メガバイトという意味になります.
みなさんが消費しているハードディスクの容量がどのくらい大きいかを知るための目安として
• フロッピーディスク1枚は1.44メガバイト
• CDROM1枚は640メガバイト
• この講義資料1回分がだいたい1メガバイト という数値を挙げておきます.
個々のファイルが消費している容量には興味がなく,あなたがハードディスクを消費している総容量のみ が知りたいときには,コマンドduに sというオプションをつけます. kterm のウィンドウの中で,
du␣-s
←- (7.49)
と入力してみて下さい. コマンドduには他にもオプションがあります.
jman␣du
←- (7.50)
と入力して, コマンドduのオンラインマニュアルを参照してみて下さい.
7.7.2 tar: 複数のファイルやディレクトリをまとめる
複数のディレクトリやファイルをまとめて保存する,あるいはまとめられたファイルを展開するためのコ マンドがtarです.
tarという名前はtape archiverの略です. 昔はまとめられたファイルがバックアップとして磁気テープ に保存されていたという歴史的な事情が名前の由来です.
図 7.11: コマンドdfの出力例
表 7.4: コマンドtarの代表的な使い方
機能 コマンド
複数のファイルをまとめる tar␣cvf␣tarファイル␣ファイル1␣ファイル2 ←- ディレクトリをまとめる tar␣cvf␣tarファイル␣ディレクトリ
←- ファイルを展開する tar␣xvf␣tarファイル
←-
複数のファイルをまとめて圧縮する tar␣cvfz␣tarファイル␣ファイル1␣ファイル2 ←- ディレクトリをまとめて圧縮する tar␣cvfz␣tarファイル␣ディレクトリ
←- 圧縮されたファイルを展開する tar␣xvfz␣tarファイル
←-
コマンドtarの代表的な使い方を表7.4に列挙します.
表7.4において, tarファイルとは,いくつかのファイルやディレクトリをまとめて得られたファイルを指し ます. このファイルには,伝統的に,圧縮をおこなわない場合には*.tar,圧縮をおこなう場合には*.tar.gz あるいは*.tgzという拡張子を付けます. 圧縮については第7.7.4節を参照して下さい. また,複数のファイ ルをまとめて圧縮するときには, ファイルを3個以上指定することもできます. 使い方は,まとめたいファ イルの名前をすべて空白で区切って並べるだけです.
ではコマンドtarを使ってみましょう. みなさんのホームディレクトリに移動してから, tar␣cvf␣lecture.tar␣./lecture
←- (7.51)
と入力し,ls␣-laFとしてlecture.tarというファイルができていることを確認して下さい.
コマンドtarにもいろいろなオプションがあります. 各自で jman␣tar
←- (7.52)
を実行して, オプションを確認して下さい.
7.7.3 フロッピーディスクの利用
みなさんのホームディレクトリにあるデータは学科のファイルサーバのハードディスクに保存されていま す. ところで,ハードディスクには寿命があり,一定の期間が経過すると壊れてしまう確率が高くなります.
学科のファイルサーバでも,このような障害に対処するために一定期間ごとにハードディスクのバックアッ プを取っている(ハードディスクの内容をDATテープなどの媒体に書き出して保存している)などの対策を 取ってはいます. しかし,学科のホームディレクトリ全体のような大量のデータのバックアップを頻繁に作 成することはかなりの手間がかかるので, バックアップの頻度はそれほど高くはありません. そして, ハー ドディスクが故障してバックアップからみなさんのホームディレクトリを復元した場合,復元されたデータ はバックアップを取った時点のものになり,その時点以降にみなさんが作成したデータは失われてしまいま す. ですから, みなさんが大事なデータを失わないようにするためには,各自でフロッピーディスクなどに バックアップを作成しておくことが望ましいです.
これとは別に,学生実験などでWindows9X/Me/NT/2000が動いているコンピュータとデータのやり取 りをしたり,自宅のコンピュータとのデータのやり取りをしたりするのにもフロッピーディスクが便利です.
フロッピーディスクとデータをやり取りするには, 第7.7.2で紹介したコマンド tar を使うか, あるいは
mtoolsという一連のツールを使います. コマンドtarは基本的にUNIXでデータをフロッピーディスクと
やりとりするためのものですが, mtoolsはWindows9X/Me/NT/2000が動いているコンピュータとデータ のやり取りをするためのものです.
コマンド tar を用いたフロッピーディスクとのデータのやり取り
コマンド tar でデータをフロッピーディスクに保存するには, 第7.7.2でファイル名を指定した部分に, ファイル名のかわりに/dev/fd0という文字列を指定します. ここに,/dev/fd0とは,コンピュータから見 たフロッピーディスクドライブの名前のようなものです.
7.7. ハードディスクの消費,ファイルの圧縮と展開 87 コマンドtar を使ってデータをフロッピーディスクとやりとりするための方法を表7.5にまとめておき ます.
表 7.5: コマンドtarを使ったフロッピーディスクとのデータのやりとり
作業内容 コマンド
データの保存: tar␣cvf␣/dev/fd0␣ファイル ←- データの読み込み: tar␣xvf␣/dev/fd0
←-
mtoolsを用いたフロッピーディスクとのデータのやり取り
Windows9X/Me/NT/2000 とファイルのやりとりをするには mtoolsというツールを使います. mtools
とは単一のコマンドではなく,いくつかのコマンドの総称です. よく使われるmtoolsのコマンドを表7.6に まとめておきます. なお, mtoolsはファイル名が日本語のファイルはうまく扱えないことがあります. で
表7.6: Windows9X/Me/NT/2000フォーマットのフロッピーディスクを操作するためのコマンド
コマンド 機能 使い方
mdir ファイル一覧を見る mdir ←-
mcopy フロッピーディスクにファイルを複写する mcopy␣ファイル␣a:
←- フロッピーディスクからファイルを複写する mcopy␣a:ファイル␣新ファイル
←- mdel フロッピーディスクのファイルを消す mdel␣a:ファイル
←-
すから, UNIXとデータのやり取りをすることが前提になっている場合には, ファイル名には日本語は使わ ない方が無難です.
7.7.4 ファイルの圧縮と展開
大きいファイルを圧縮するとディスクの容量を節約することができます. このためによく使われるコマン ドがcompress, uncompressおよびgzip, gunzipです.
compressで圧縮されたファイルには*.Zという拡張子が, gzipで圧縮されたファイルには*.gzという
拡張子が付きます. これらの関係を表7.7にまとめておきます.
表7.7: ファイルの圧縮と展開のためのコマンド
圧縮 展開 拡張子
compress uncompress Z
gzip gunzip gz
では, compressとgzipを使ってみることにしましょう. まず準備として, 先の例題でできた lecture.tar というファイルをコピーして, 同じ大きさのファイルを2個作っておくことにします.
cp␣lecture.tar␣lecture2.tar
←- (7.53)
では,以下の操作をおこなって下さい.
compress␣lecture.tar
←- (7.54)
gzip␣lecture2.tar
←- (7.55)
操作が終わったら, ls␣-laF
←- (7.56)
として,作成されたlecture.tar.Zおよびlecture2.tar.gzの大きさを比較してみましょう. 最後に, uncompress␣lecture.tar.Z
←- (7.57)
gunzip␣lecture2.tar.gz
←- (7.58)
として,これらのファイルを展開しておきましょう.
7.7.5 uuencode と uudecode
みなさんがMuleを使って作成したファイルのようなものはテキストファイルと呼ばれます. テキスト ファイルはそのまま読むことが可能です.
tarやcompressやgzipといったコマンドを使ってファイルを処理すると,バイナリファイルと呼ばれる
ファイルが生成されます. バイナリファイルは,そのままでは読むことはできません. みなさんがふだん実 行しているコマンドの大部分もバイナリデータです.
ところで,電子メールで相手にバイナリファイルを送信したいという状況がよくあります. しかし, バイ ナリファイルはそのままでは読めないデータなので,これを電子メールでそのまま送信するわけにはいけま せん. このような場合には, uuencodeというコマンドを使ってファイルをテキストファイルに変換してか ら送信します. 受信した側は, uudecodeというコマンドを使って受け取ったデータを復元します.
uuencodeの説明に入る前に,バイナリデータがそのままでは読めないことを確認しておきましょう.
jless␣env.tar
←- (7.59)
と入力して下さい. すると, 画面に
"lecture.tar" may be a binary file. See it anyway? (7.60) というような確認のメッセージが出ます. ここでは
y
←- (7.61)
と入力します. 結果として画面に判読不能の文字が出ます. すぐに
q (7.62)
と入力してjlessを終了しましょう.
では, uuencodeを実行してみます.
uuencode␣lecture.tar␣lecture.tar␣>␣lecture.uu
←- (7.63)
と入力して下さい. すると, lecture.uu というファイルが生成されます. では, コマンド jless を使って,
lecture.uuというファイルが確かに読めることを確認して下さい.
uuencodeの使い方は,
uuencode␣もとのファイル␣復号してできるファイル␣>␣出力ファイル
←- (7.64)
です. 個々のパラメータの意味は以下の通りです.
もとのファイル これからuuencodeを使って変換したいファイル名を指定する
復号してできるファイル 変換後のファイルにuudecodeを施したときに復元されるファイル名を指示する (もとのファイルと同じ名前でもいいです)
出力ファイル uuencodeによって変換した結果を保存するファイル名を指定する 次に, uudecodeを実行してみます.
uudecode␣lecture.uu
←- (7.65)
と入力して下さい.
uudecodeの使い方はuuencodeよりずっと簡単で, uudecode␣ファイル
←- (7.66)
とするだけです. もちろん, 上記の操作はuuencodeによって変換されたファイルに対してのみ意味を持ち ます.