第 9 回 (2006.06.16) -- ファイルのバックアップ,バージョン管理(RCS)

ファイルのバックアップ

操作ミスや機器の故障等でファイルが失われると困る, というのは誰にでも想像できるだろう. しかし,その真の悲劇性はまさに体験した者にしかわからない.
# 修論,博論の〆切まぎわになってファイルを失い,1年を棒にふったという伝説はよく聞くところだ.

特に unix では「いったん失われたファイルは回復できない」ため, windows などの OS よりもその危険性は間近にあるといえる.

そうした悲劇の主人公にならないために, ファイルのコピーを事前に(別の場所に)保存しておくのが 「バックアップ」である.

本講義では,バックアップに使われる通常の手順,方法について学習し, いざというときに泣かないだけの能力を身につけることを目的とする.

記憶媒体

バックアップの基本は, 「コピーは物理的に隔離せよ」 である.
これは,ファイルを失う要因の一つに火事や地震などの災害による機器故障があるから, ということを考えれば分かりやすい. 実際,ちょっとした規模の企業はどこもコンピュータ上のデータを日本の各地に分散してバックアップしている.

さて,では物理的にはどのような機器にバックアップすれば良いのだろうか. もちろん,データを格納できるのならば何でも良いのである. 紙に鉛筆で,というのだって,それで間に合う情報ならばそれで良いのである.
ここでは,阪大教育用計算機システムで用いることのできる記憶媒体を中心に, バックアップに使えるものを解説する.

■ バックアップに使える記憶媒体 ■
名称 解説
ハードディスク 大量のデータを格納するには,現在はハードディスクがもっとも割安だというのは良く知られた事実である.
よって,大量のデータを「異なる」ハードディスクに格納して バックアップとする,というのは良い手段である.
例えば自宅の PC のハードディスクなどは, 大学から物理的にも隔離されているので,十分によいバックアップ先である.
ただし,ハードディスクは「消耗品」であり,ある程度使用すると ほぼ必ず壊れるという点には注意が必要である.

大学のシステムは物理的にいじることができないため,異なるハードディスクへのデータ転送は ネットワーク経由か,別の記憶媒体経由ということになる. ネットワーク経由のデータ転送法については,後の講義で示す.
DVD-R, CD-R, MO, ZIP 等の(光)磁気媒体 ハードディスクについで割安なバックアップが可能な記憶媒体である.
普及率が高く,媒体が入手しやすいのも魅力である.
ただし,一枚あたりの記憶容量が数百MB 〜数GB 程度であり, 大量のデータをバックアップするにはつらいことがある.

阪大教育用計算機システムでは,
CD-ROM には /mnt/cdrom で,
MO には /mnt/mo で,
ZIP には /mnt/zip で,
アクセスできるだろう. 例えば具体的には(マウント作業を行った後 or auto-mount された後), cp -p ファイル /mnt/mo で MO へファイルをコピーできる… と思われる.
が, こうしたリムーバブルディスク関係はシステムに依存するところが非常に大きいので, 安全に使うためには, 「利用の手引」の リムーバブルディスクの使い方 を参照し,それに従うのが良いだろう.
磁気テープ 個人ユーザで使うには高価であるが, 一本あたりの記憶容量が 数百GB クラスのものもあるため, 大量データのバックアップに適している記憶媒体. プロ用の媒体とも言える.
ただし,テープの性質上,機敏な操作性は期待できない. 一定の時間をおいて全ファイルをバックアップする等の定期的なバックアップに向いている.

個人ユーザで使うことはほぼ無いだろうから,使い方の解説は省略する. ただし,歴史的にはもっとも良く使われてきた媒体であるため,unix 関連の参考資料には非常に頻繁に解説が掲載されている.
フロッピーディスク 価格も安く,入手しやすいため,お手軽な媒体である. しかし,通常は 1.44MB,特殊なものでもやっと 120MB 程度の容量しかないため, 本格的な記憶媒体には向かない.
環境の設定ファイル,小さめのテキストファイル(TeXファイルや html ファイル) などには十分なので,うまく使えばそれなりに役に立つ.

阪大教育用計算機システムでは,
/mnt/floppy でアクセスできるだろう. 例えば具体的には, cp -p ファイル /mnt/floppy でフロッピーディスクへファイルをコピーできる… と思われる.
が,これもやはり安全に使うためには, 「利用の手引」の リムーバブルディスクの使い方 を参照し,それに従うのが良いだろう. また,フロッピーディスクの使い方については, フロッピーを用いたデータ交換について に詳しい解説があるので,一読しておくと良い.
紙(と鉛筆) 古典的であるが,意外と馬鹿にできない媒体である. 少量のデータを高速に記録するには実はもっとも適した媒体かも知れない.
使い方は説明するまでもないだろう(^-^).
脳みそ うまく使えれば最高の記憶媒体である. 格納したデータをコンピュータに入出力するのには時間がかかるのと, データが簡単に失われたり変質したりするのが欠点である.

複数のファイルを一つのファイルに(tar, lha)

大量のファイルに対する同一の処理(ファイルのバックアップなど)を施す際には, 一つのファイルにまとめてから処理する,というのが unix でよく用いられる手法である. これには,

という利点がある. そこで,複数のファイルを一つのファイルにまとめる方法について解説する.

tar の使い方

ファイルを一つにまとめるには,unix では伝統的に tar コマンドが用いられる.
なお,tar でまとめたファイルには, .tar という拡張子をつけるのが習慣である.

以下に,典型的な tar の使い方の例を示そう. 詳しくはマニュアルで調べること.

tar でファイルを一つにまとめるには
まとめたいファイルが詰まったディレクトリの「上のディレクトリ」で, 次のように入力する.
ただし,ターゲットのディレクトリ名は dummy であるとする.

tar cvf backup.tar ./dummy

注意
tar のターゲットのディレクトリやファイルは,相対ディレクトリで指定するべきである. なぜなら,絶対指定してあると, バックアップを戻すときに存在するファイルを上書きしかねないからである. バックアップという「微妙かつ重要な」操作を行う際には, 全ての点で慎重であるべきである.


tar でまとめたファイルをバラバラに戻すには(復元)
ファイルを展開したいディレクトリで, 次のように入力すれば良い.

tar xvpf backup.tar

tar でまとめたファイルから一部のファイルだけを抜き出すには(復元)
上の例の dummy というディレクトリ中の dd.tex というファイルを抜き出したいとしよう. ファイルを展開したいディレクトリで, 次のように入力すれば良い.

tar xvpf backup.tar ./dummy/dd.tex

実習
適当なディレクトリとファイルを対象にして, 上の3つの作業を行ってみよ.
適当なファイルが見当たらない者は,次のような内容のシェルスクリプトを作って使うのもよい.

(空っぽなファイルを適当な数だけ作るスクリプト例)
#!/bin/sh
x=0
while [ $x -le 10 ]
do
   touch dummy-$x.txt
   x=`expr $x + 1`
   done

lha の使い方

(日本では) windows や dos で良く使われる lha というコマンドも, 最近は unix でも使えることが多い. lha は,ファイルを一つにまとめる機能とファイル圧縮機能の両方を持つため, 手軽に良い結果が得られるということで人気がある.
なお,lha でまとめたファイルには, .lzh という拡張子をつけるのが習慣である.
また,windows とファイルをやり取りするときなどは lha の方が tar よりも適していることも多い. そこで,lha についても記しておく.

lha でファイルを一つにまとめる (注意圧縮も同時に行われる)
まとめたいファイルが詰まったディレクトリの「上のディレクトリ」で, 次のように入力する.
ただし,ターゲットのディレクトリ名は dummy であるとする.

lha a backup.lzh ./dummy

lha でまとめたファイルをバラバラに戻す(復元)
ファイルを展開したいディレクトリで, 次のように入力すれば良い.

lha x backup.lzh

lha でまとめたファイルから一部のファイルだけを抜き出す(復元)
上の例の dummy というディレクトリ中の dd.tex というファイルを抜き出したいとしよう. ファイルを展開したいディレクトリで, 次のように入力すれば良い.

lha a backup.lzh ./dummy/dd.tex

実習

  1. 適当なディレクトリとファイルを対象にして, 上の3つの作業を行ってみよ.

  2. lha でまとめて圧縮した結果,どれだけファイルサイズが小さくなったか比べてみよ.

    具体的には,~/dummy というディレクトリの(全ての)ファイルをまとめて圧縮した場合は,
    du -k ~/dummy
    とすると,dummy ディレクトリ以下のファイルサイズの合計が Kbyte 単位で出力される(要するに圧縮前のサイズ).

    また,圧縮した結果のファイルが dummy.lzh という名前ならば ls -lg dummy.lzh で byte 単位でファイルサイズがみられる(圧縮後のサイズ).

圧縮(compress, gzip, bzip2, lha)

ファイルを一つにまとめると扱いが便利になるというのは既に学習した. しかし,これだけでは,ファイルサイズの無駄はあまり削られない.
もし,データを失うことなくファイルサイズを小さくすることができれば,バックアップでは何かと都合が良い.

この希望は実現されている. この技術,つまり, 情報理論の結果を駆使してデータはそのままでファイルサイズを小さくする技術がファイル圧縮である.

注意 画像の jpeg ファイルや,音声の mp3 ファイルなどは, それ自体が既に圧縮した形式であるので, 圧縮ツールを使って圧縮してもほとんど効果がないことがほとんどである.
むしろファイルサイズが大きくなってしまうことがあるぐらいなので, こうしたファイルを圧縮しようという無駄なことはしないように.

unix でファイル圧縮に用いるツールは, compress, gzip, bzip2, lha などが挙げられよう.
このうち,もっとも良く使われるのは gzip であり,もっとも性能のよいのは(総合的に見て) bzip2 であろう. よって,unix では 「tar でひとまとめにしてから gzip (or bzip2)で圧縮する」 というのが主流の方法であり,これはよく 「tar + gzip(or bzip2)」 などと表記されるので覚えておくと良い.

# ファイル圧縮技術は情報理論技術の精華であるため, 現在でも多くの研究者やソフトウェア開発者がしのぎを削って 日々新しいソフトウェアを開発,発表している.
# 最新のものの方がもちろん全体的な性能は良いのだが, これまでの圧縮ファイルと互換性が無いため, ツールの乗り換えはタイミングが難しい.
# ちなみに,たぶんこれからは bzip2 が主流になっていくだろう.

compress の使い方

compress は unix では非常に古くからある圧縮ツールであるが, 悪名高き某社の特許に抵触する可能性があるとされる.
また,性能も低く,そのため,現在はまったく使われないと言ってもよいツールではあるが, 古典から学ぶところもあるだろうから,学習しておこう.
なお,compress で圧縮したファイルには拡張子 .Z が付加される.

さて,圧縮するファイル名は dummy.txt として,以下に使い方を例示しよう.

compress でファイルを圧縮する.
まとめたいファイルが存在するディレクトリで, 次のように入力する.
compress dummy.txt
すると, dummy.txt.Z という圧縮されたファイルができるはずである.

compress で圧縮したファイルを元に戻す(復元)
圧縮したファイルが存在するディレクトリで, 次のように入力すれば良い.
uncompress dummy.txt
(注) この時,拡張子の .Z は指定しなくても良い.

実習

  1. 適当なファイルを対象にして, 上の2つの作業を行ってみよ.

  2. 圧縮した結果,どれだけファイルサイズが小さくなったか比べてみよ.

gzip の使い方

次に,比較的新しいがその優秀さからたちまち広く使われるようになった gzip について学習しよう.
なお,gzip で圧縮したファイルには拡張子 .gz が付加される.

さて,圧縮するファイル名は dummy.txt として,以下に使い方を例示しよう.

gzip でファイルを圧縮する.
まとめたいファイルが存在するディレクトリで, 次のように入力する.
gzip dummy.txt
すると, dummy.txt.gz という圧縮されたファイルができるはずである.

gzip で圧縮したファイルを元に戻す(復元)
圧縮したファイルが存在するディレクトリで, 次のように入力すれば良い.
gunzip dummy.txt.gz

実習

  1. 適当なファイルを対象にして, 上の2つの作業を行ってみよ.

  2. 圧縮した結果,どれだけファイルサイズが小さくなったか比べてみよ.

bzip2 の使い方

次に,かなり新しく,たいていの場合において gzip よりも優秀である bzip2 について学習しよう.
なお,bzip2 で圧縮したファイルには拡張子 .bz2 が付加される.

さて,圧縮するファイル名は dummy.txt として,以下に使い方を例示しよう.

bzip2 でファイルを圧縮する.
まとめたいファイルが存在するディレクトリで, 次のように入力する.
bzip2 dummy.txt
すると, dummy.txt.bz2 という圧縮されたファイルができるはずである.

bzip2 で圧縮したファイルを元に戻す(復元)
圧縮したファイルが存在するディレクトリで, 次のように入力すれば良い.
bunzip2 dummy.txt.bz2

実習

  1. 適当なファイルを対象にして, 上の2つの作業を行ってみよ.

  2. 圧縮した結果,どれだけファイルサイズが小さくなったか比べてみよ.

バージョン管理(RCS)

Computer をしばらく使っていると気づくだろうが, われわれは一つのファイルを何度も修正することがある.
このファイルが大きかったり内容が複雑だったりする場合, 修正は常に「改善」であるとは限らず,「改悪」であるかもしれない. 修正作業そのもののミスにより,意図しない修正を施してしまうこともある. また,修正によって大事な情報を削除しないといけないというケースも存在するだろう.
こうしたとき,以前の状態のファイルを全てバックアップして保存しておけば, こうした問題は解決できる. つまり,「ファイルのバージョン違い版を管理する」ことが適切に行えれば良いのだ.
こうした,ファイルのバージョン変更にまつわる情報を管理するツールを 「バージョン管理ソフト」と呼ぶ.

本講義では,バージョン管理ソフトとして「RCS」を学ぶことにする. この RCS は個人ユーザが使うのに適しており,比較的使いやすく,かつ, unix の歴史上も由緒正しいものであり,最初に学ぶには最適である.
現在,学ぶに値するバージョン管理ソフトとしては他に RCS の進化版とも言える「CVS」がある. CVS は,ネットワークを越えて使うことができ,複数の人間で使うのに適した機能が多い など, 優れたツールであるが,その分,使い始めるにはやや敷居が高く,また, 個人ユーザにはやや over spec な感がある. そこで,RCS を使いこなせるようになった者は個人的に CVS を学習するのが良い.

なお,本講義では RCS を一人で単独で使うことを前提に解説する. 複数の人間で同一ファイルを編集する際にはまた異なった注意が必要であるが, そうした目的には CVS がより適しているので,そうした場合には CVS を使うのが良かろう.

参考資料(RCS)

RCS は 1982 年には既に姿を見せていたバージョン管理ソフトであり, 古くからよく知られている. 概念はシンプルで,使うコマンドもそう複雑ではないが, 参考となる資料があればより理解も深まるだろう.

RCS のおおざっぱな説明

RCS の概念

RCS を理解するには,おおざっぱに言って バージョン, バージョン管理ファイル,チェックイン,チェックアウト,ロック という概念が分かれば良い. それらについて説明しよう.

バージョン(Version), リビジョン(Revision)
日本語で言うと「バージョン = 版」,「リビジョン = 改版」ということになる. ファイルを更新したら「新しい版になった=バージョンが上がった」と考えれば, 大体分かるだろう.

バージョン管理ファイル
管理対象のファイルの全てのバージョンの情報が詰まったファイル.
管理したい対象のファイル名が例えば dummy.tex であるとすると, dummy.tex,v という名前になるのが普通である. つまり,元のファイル名の末尾に ",v" をつけたファイルがバージョン管理ファイルであると思えば良い.
# OS の制約等で違うこともあるが.

なお,バージョン管理ファイルは,初めてチェックインするときに自動的に作られる.

管理したいファイルが存在するディレクトリの下に RCS という名前のディレクトリがあれば,そのディレクトリの中に作られる. RCS ディレクトリが無ければ,管理したいファイルと同じディレクトリにバージョン管理ファイルは作られる.

ロック
本来はバージョン管理ファイルに「鍵」をかけること,である. 意味としては,「ただいま私が編集中なので,他の人はいじれません」ということになる.
実際,ファイルをロックすると,ロックした本人しか新しいバージョンのファイルを登録できない.
# この場合でも,他人はそのファイルを読み出すことはできる.

この機構によって,RCS は複数の人間による単一ファイルのバージョン管理を行っている. これを「ロッキングによるファイル衝突の防止」とよぶ.

チェックイン
ファイルをバージョン管理ファイルに「このファイルが最新バージョンですよ〜」と登録する作業を言う.
注意 ロックしてあるファイルしか登録できないので注意すること.
ロックしていないファイルはチェックインできない. こういう時は rcs -l ファイル名 とするとファイルがロックされ,チェックインできるようになる. 詳しくは rcs を参照すること.

初めて登録する時には,「そのファイルがどんなファイルなのか」を尋ねてくるので,丁寧に記述しよう.
# もちろん英語で(^-^).
# Emacs の Version Control 機能を用いると日本語で記述することもできるかも知れない.
# 気になる者は詳しく調べてみると良い.

登録するたびに「そのファイルのどこをどのように変更したのか」を尋ねてくるので, これも後々のために丁寧に記述しておくべし.
# これももちろん英語で(^-^).

チェックアウト
バージョン管理ファイルからファイルを取り出す作業を言う.
注意 ロックして取り出すと編集可能に, ロックしないで取り出すと編集不可になることに注意せよ.

一人だけで使う場合は,常にロック状態で作業するか, ロック機構を無効にするかすればよい. ロック機構を無効にする方法は, rcs を参照すること.

RCS でのファイル管理,編集の流れ

RCS file managing flow
RCS を個人一人で用いる時は,通常は上の図にあるように 「ロックつき」でチェックイン,チェックアウトしていればまず問題はないだろう(ちょっと邪道だが).
流れをもう少し詳しく書くと,RCS では

  1. 管理したいファイルを「バージョン管理ファイル」に チェックインする.
    # バージョン管理ファイルは,初めてチェックインするときに自動的に作られる.

  2. バージョン管理ファイルから,使いたいファイルを ロックつきでチェックアウト して取り出す.

  3. ファイルを編集する.

  4. 1. へ戻る.

という繰り返しで用いるのが普通である.
何か特別なことをしたい時だけ,別のことをすればよい.

注意 極端な話,下で示す ci -l -zLT というコマンドだけ覚えておけば他は忘れてもなんとかなるということである.

RCS を簡単に使ってみる

実習 以下の手順に従い,rcs を試してみながら理解せよ.

  1. RCS の練習用に適当なディレクトリに移動する.

  2. 次の内容のサンプルファイルを,ファイル名 dummy.txt で作る.
    Sample File
    My name is hogehoge.
    なんでもいいから書け.
    $Id$     ← この行はこのサンプルには必ず書いておくこと.
    $Date$   ← この行はこのサンプルには必ず書いておくこと.

  3. バージョン管理ファイルを置く特別なディレクトリ RCS を作っておく.
    具体的には mkdir RCS とするだけの話だ.

  4. 初めてのチェックインを行う.
    より具体的には ロック付きでチェックイン & チェックアウトしてみる,ということになる.
    実際には,
    ci -l dummy.txt
    とするだけだ.
    注意 ci -l は,「チェックインした後,自動的にロック付きでチェックアウト」 するという便利なコマンドである.

    すると,最初は次のようにメッセージが出る.
    dummy.txt,v  <--  dummy.txt
    enter description, terminated with single '.' or end of file:
    NOTE: This is NOT the log message!
    >>
        
    ここでは 「このファイルの内容を記述せよ」と言われているので, 後々のためにも(英語で)きちんと記入すること. なお,記入し終わったら, " . "(ピリオド)のみの行を記入すれば「記入終わり」となる.

    記入が終わると,
    initial revision: 1.1
    done
    という表示が出て,バージョン 1.1 という真新しいバージョンでこのファイルが登録されたことが分かる.

  5. ディレクトリ RCS の中にバージョン管理ファイルができているか確認する.
    ls RCS とすればよいだろう.

  6. ci -l の自動チェックアウトがうまくいったか,つまり, チェックアウトされたファイル dummy.txt が存在するか確認する.
    ls dummy.txt とすればよいだろう.

  7. チェックアウトされたファイルがどう変わったか見てみる.
    less dummy.txt とすればよいだろう. どこがどう変わったかよく見てみよ.
    また,時間がどう記述されているか,自分の腕時計などと比べてみよ.

  8. サンプルファイルの中身を編集して変えてみる.
    $Id$, $Date$ の部分はいじらないこと.

  9. 再びチェックイン & チェックアウトを行ってみる.
    さて今度は,-zLTという特別なオプションをつけて
    ci -l -zLT dummy.txt
    としてみよう.
    注意 -zLT は,「ローカル時間を用いて時間表示を記述する」というオプションである.
    # 要するに,「日本時間」で時間が表示されるということになる.

    すると,
    RCS/dummy.txt,v  <--  dummy.txt
    new revision: 1.2; previous revision: 1.1
    enter log message, terminated with single '.' or end of file:
    >>
        
    という表示が出る. ここでは 「このファイルをどう変更したか記述せよ」と言われているので, 後々のためにもこれも(英語で)きちんと記入する. なお,記入し終わったら, " . "(ピリオド)のみの行を記入すれば「記入終わり」となるのも先と同様である. 今度は終了は単なる
    done
    と表示されるだけである.


  10. チェックアウトされたファイルがどう変わったか再び見てみる.
    less dummy.txt とすればよいだろう. どこがどう変わったかよく見てみよ.
    とくに時間の記述がどう変わったか,自分の腕時計などと比べてみよ.

  11. dummy.txt を消去してみる!
    rm dummy.txt としてみれば良いだろう.

  12. dummy.txt を復活!
    バージョン管理ファイル自身は消えていないので, そこからチェックアウトすれば,ファイルが復活することになる.
    具体的には,
    co -l -zLT dummy.txt
    とすればよい.
    注意 チェックアウトコマンド co は特に指定しなければ最新バージョンのファイルを取り出す.

  13. 古いバージョンとの違いを調べてみる.
    具体的には,
    rcsdiff -zLT -r1.1 dummy.txt
    とすればよい. これは,最新バージョンとバージョン 1.1 の dummy.txt を比べよ, というコマンドになる.

  14. これまで dummy.txt に加えた編集の履歴を見る.
    具体的には,
    rlog -zLT dummy.txt
    とすればよい. こうすると,今までのチェックインの際に記述した変更内容などがリストアップされる.

  15. dummy.txt に埋め込んであるキーワード(Id, Date)を取り出してみる.
    具体的には,
    ident dummy.txt
    とすればよい. こうすると,$Id$ や $Date$ と書き込んだ部分が出力される.

    注意 この機能はバイナリファイルに対しても有効であるので, 本格的なプログラミングにも適用できる.
    例えば,バイナリであるコマンド rcs 自身にはどのようなキーワードが埋め込まれているのだろうか. 調べてみよ.

RCS の細かい説明

キーワードの埋め込み(RCS)

上の 簡単に使ってみる の最後にも出てきたように, $Id$ や $Date$ などとファイルのなかに決まったキーワードを埋め込んでおくことで, RCS の様々な情報を自動的に記述することができる. 以下に,どのようなキーワードがあるのかを示しておく.

■ RCS で埋め込めるキーワード ■
キーワード 意味
$Id$ ファイルの名前,バージョン,日時,作成者,状態,ロックした者
という情報. 大体はこれで十分だろう.
$Header$ $Id$ とほぼ同じ情報になるが,ファイル名が「フルパス」 で記述される.
情報が無駄に長くなるだけなので一般にあまり使われないが, 使いたい場面もあるかも知れない.
$Date$ そのバージョンがチェックインされた日時.
$Revision$ バージョン.
$Author$ そのバージョンをチェックインしたユーザ名.
$Locker$ 現在そのファイルをロックしているユーザ名.
$RCSfile$ ファイル名.
$Source$ ファイル名.ただし,フルパス.
$State$ そのバージョンの「状態」. 通常は Exp になっているだろう.
$Log$ そのチェックインの際の「変更点記述」を表示する.
ファイルが大きくなってしまうのと,rlog で同じことができるということから,あまり使われない.

実習
上のキーワードを全て書き込んだファイルを作成し,チェックイン & チェックアウトして,キーワードがどう作用しているか確認せよ.

コマンド(RCS)

以下に,RCS のコマンドについて簡単な一覧を載せよう. 詳しくは man コマンドで調べれば良いが,通常はこれぐらい知っていれば十分なはずである.

ci (オプション) ファイル名
チェックインコマンド.
何もオプションをつけないと,ファイルが登録 & 吸収されてしまって,手元に元のファイルが無くなるが慌てないように. こういう時は慌てずにチェックアウトすれば良いだけだ.
オプションは以下の通り.

-l   チェックイン後,自動的に「ロック付きで」チェックアウトする.
-u   チェックイン後,自動的に「ロックなしで」チェックアウトする.
-zLT   時間表記を「ローカル時間」で行う. これが無いときは,グリニッジ標準時で時間表記される.
-rリビジョン番号   指定したリビジョン番号でチェックインする. リビジョンを大きくあげたい,というときなどに用いる.
-f   ファイルが変更されていなくても強制的にチェックインする.

co (オプション) ファイル名
チェックアウトコマンド.
オプションは以下の通り.

-l   「ロック付きで」チェックアウトする.
-u   「ロックなしで」チェックアウトする.
-zLT   時間表記を「ローカル時間」で行う. これが無いときは,グリニッジ標準時で時間表記される.
-rリビジョン番号   指定したリビジョン番号のバージョンのファイルをチェックアウトする.
-f   既にファイルが存在していても,チェックアウトして強制的に上書きする.

ident (オプション) ファイル名
ファイル内のキーワードを読み出すコマンド.
大きく動作が変わるオプションはない.

rlog (オプション) ファイル名
バージョン管理ファイルのログ(履歴記録)メッセージや,関連情報を出力するコマンド.
オプションは以下の通り.

-L   ロックされているファイルだけを対象とする.
-R   バージョン管理ファイル名を表示する.
-h   関連情報を表示する.
-t   関連情報を表示する. -h オプションよりも少しだけ情報が多い.
-rリビジョン番号   指定されたリビジョン番号のファイルの情報のみを表示する.

rcsdiff (オプション) -r番号1 -r番号2 (オプション) ファイル名
バージョン管理されているファイルのバージョン違いを比べる.

二個の番号は省略が可能で,番号の個数によって次のように動作する.
番号1 と番号2 が与えられている   各々の二つのバージョンのファイルを比較する.
番号1 のみが与えられている   番号1 のバージョンのファイルと,現在存在するファイルとを比較する.
番号は一つも与えられていない   登録済みの最新バージョンと,現在存在するファイルとを比較する.

rcs
バージョン管理ファイルの様々な性質を変更する.
オプションは以下の通り.

-l   ファイルをロックする.
-u   ファイルをロック解除する.
-L   ロックを厳密に行うモードにする(普通はデフォルト).
-U   ロック機構がほぼ無効なモードにする. このモードでは,ロックされていないファイルでもチェックインできる… があまりお勧めしない.

レポート課題(20点)

以下に示された課題について

AppliedMath-Report-09

という題名をつけて e-mail にて教官宛にレポートとして提出せよ(教官のメールアドレスは授業中に口頭で伝える).
なお,レポートを e-mail の代わりに TeX で作成した書面にて提出してもよい.

課題内容

  1. ファイルのバックアップの部分で解説した の技術を各々使って,適当な複数のファイルをフロッピーディスク等(何でもよい.USBメモリキーや,CD-R でも良いだろう)にバックアップせよ.

  2. 阪大教育用計算機システム上でこれまでに作成したファイルの全てに RCS でのバージョン管理を試みてみよ.
    その際,$Log$ 機能を盛り込んでみて支障がないかどうかチェックせよ. もし支障があるならば,どうやって解決すれば良いかマニュアルを調べるなどして考えよ.

  3. RCS の面白い使い方が何かないか考えてみよ.

  4. RCS の進化版ともいえるバージョン管理ソフトの CVS について調べ, RCS のチェックイン,チェックアウトに相当する操作は CVS ではどうなっているのかを記せ.
    # web 上の CVS に関する資料は RCS より多いので,調べるに当って困ることはないハズである.




最終更新日 … $Date: 2006/05/06 18:08:31 $
Valid CSS! Valid XHTML 1.1!