pseudo dumpfsを再実装
自動的にバックアップを取るためにpdumpfsを使おうと思ったのだが研究室のマシンにはrubyが入っていない。Javaは入れたのでJrubyも試してみたが"Not Implemented Error"と出て使い物にならない。
最初はPythonに移植していたのだが、よく考えたらシェルスクリプトでも十分書けるのではないかと思い始めた。'diff'で比較して'ln'でハードリンクを作れば十分な気がしてきた。Pythonの勉強がてらにやるのでPythonで実装するが。
とりあえず、簡単な動作でも書いておく。
- バックアップ先が"/Backup"でバックアップ元が"/src"の場合、"/Backup/.rev/1196431404/src"といったディレクトリが作られる
- ここで"1196431404"は`math.floor(time.time())`の値
- "/Backup/2007/11/30"から"/Backup/.rev/1196431404"にシンボリックリンクをはる
- この際すでに"/Backup/2007/11/30"が存在していた場合リンク先を変える
- "/Backup/2007/11/30"はos.path.joinで"/Backup"と"time.localtime(time.time())"で得られた年月日をあわせたもの
- "/Backup/latest/src"と"/src"を比較
- 変更されたかどうかの判定は"filecmp.dircmp"クラスを用いる
- 変更のないファイルは"os.link()"でハードリンクを"/Backup/latest/src"から"/Backup/.rev/1196431404/src"に作成
- 変更のあったもしくは存在しないファイルは"shutil.copy2()"で"/src"から"/Backup/.rev/1196431404/src"にコピー
- "/Backup/latest"のシンボリックリンク先を"/Backup/.rev/1196431404"に更新する