================
PyDumpFSについて
================
.. contents::

PyDumpFSとは
============
Pythonで作られたPlan9 [#]_ のdumpfs [#]_ のまがいものであり、バックアップを行うソフトである。完全な状態で対象を保存するため、いつでも過去のファイル を取り戻すことができる。

.. [#] 元AT&Tのベル研究所が研究開発中のOS。 http://plan9.bell-labs.com/plan9/
.. [#] Plan9の開発過程で生まれたバックアップシステム http://plan9.aichi-u.ac.jp/dumpfs/

PyDumpFSはバックアップ先ディレクトリに"年/月/日"の形式でス ナップショットを保存する。初回のみバックアップ対象ディレク トリ全体をコピーして、2回目以降は差分でバックアップしていく。ディスクの消費量を節約するために、更新されなかったファイルは前日のスナップショットのファイルへのハードリンクとして記録される。

PyDumpFSの動作例
================
"/home/hoge"をバックアップ対象ディレク トリ、"/backup"をバックアップ先とするとコマンドラインオプションは以下のようになる。::

    pdumpfs.py /home/hoge /backup

これを実行すると"/backup"に"latest"と"2008" [#]_ の2つの通常ディレクトリと".rev"という1つの隠しディレクトリが作られる。ここで2つの通常ディレクトリは人間が参照しやすくするためのものでバックアップ本体は".rev"以下に格納されている。

.. [#] 現在が2008年でないならその年を示す数字

オプションに何も指定していないので"/home/hoge"以下にある全てのディレクトリおよびファイルがバックアップ対象となっている。よって"latest/hoge"の中身と"/home/hoge"の中身はまったく同じとなる。常に"latest"に含まれるディレクトリは最新のバックアップ内容を指し示す。

"2008/02/01"にPyDumpFSを実行していてその時の"/home/hoge"の内容を参照したくなったときは"/backup/2008/02/01/hoge"を参照すればいい。そこにそのときの内容が含まれている。

コマンドラインオプションの詳細
==============================
必須オプション
--------------
2つあり、それはバックアップ対象とバックアップ先である。常にこの順で指定する。絶対パスでなく相対パスであってもよい。

対象を制御するオプション
------------------------
名前で制御
~~~~~~~~~~
正規表現を用いて除外ファイル名を指定できる。簡単な例を書いておくと、拡張子が".odb"のファイルを除外するときは、以下のオプションを追加する。::

    --exclude="\.odb$"

"-e"は"--exclude"と等価であるので以下のように書いてもいい::

    -e "\.odb$"

サイズで制御
~~~~~~~~~~~~
あまりに大きなファイルはバックアップしないようにサイズの制約をつけることが出来る。10MB以上のファイルをバックアップ対象からはずす場合は以下のオプションを追加する。::

    --size=10M

やはり短縮形が用意されていて"--size"の短縮形は"-s"である。また単位として"M"以外に"G"と"k"が使える。

画面表示を制御するオプション
----------------------------
"--verbose"で冗長な表示を行い"--quiet"で逆に表示を抑制する。短縮形はそれぞれ"-v"と"-q"。標準は"--quiet"。

"--debug"もしくはその短縮形"-d"でさらに詳細な表示が得られる。バグを見つけた場合はこのオプションをつけたときの出力と共に報告してもらえるとありがたい。(1.0.3以降)

その他のオプション
------------------
--version    バージョン情報を表示する
--help, -h    簡単な説明を表示する
--dry-run, -n    画面表示だけで何もしないようにする(1.0.1以降)

ライセンス
==========
付属の"License"を参照。

連絡先等
========
本プログラムはMercurial [#]_ をバージョン管理に用いています。またメインリポジトリ [#]_ へのコミットに制限はつけていません。

.. [#] 分散型バージョン管理システム http://www.selenic.com/mercurial/
.. [#] http://www.masahase.mydns.jp/hg/PydumpFS/

機能追加要望等はTODOに追加してコミットしてもらえれば、いつか気が向いたら実装します。

どうしても作者と連絡がとりたい場合は以下のアドレスにメールしてください。

hasegawa@mapse.eng.osaka-u.ac.jp

