savefile for windows -- サーバ上の特定ファイルの履歴をバックアップ
Windowsのバッチだけでやってみました。
いわゆる車輪の再発明ですし、自分では再利用などはせずに必要が発生すればまた似たようなものを使って使うに違いない。
マックのタイムマシンとまではいかないけどまあ更新があれば保存されている。つまりちょっと意欲的過ぎちゃったかなんかでおかしな編集をしちゃってぐちゃぐちゃになっちゃった場合とかにも以前のやつが残ってて戻れる。
一つ前だけとか気が向いて保存した時だけとかでなく。特に意欲的な大改造してる時なんかは攻撃的になっていて防御的でない即ちバックアップ忘れがちだし。
ファイルに変更がなければ保存ファイルは増えない。
Windowsのコントロールパネルの「タスク」から10分ごととかに設定しておけば。
最新版は取ってきてある、という状態になる。ひとつ前のものと比べて変化がなければ、「取ってきてはあるけど改めて保存はしてない」という状態になり、変化があれば、年月日と時分のディレクトリを掘ってそこにもコピーする。
細かな変化が要らなくなったら年月日のディレクトリの中の時分のディレクトリを消しちゃえばいい。年月日のディレクトリにもその日に変更されたものはその日の最終版がある。
どのファイルも変化してないならその年月日や時分のディレクトリは作られない。
ディレクトリが作られても、ひとつ前に比べて変化がなかったファイルはそこにはコピーされていない。
まったく何もインストールせず Windows XP にもともと付属しているコマンドだけでバッチでやってるというのが味噌。pdumpfsやマックのタイムマシンのようなハードリンクみたいのは使ってないからあんまり複雑な事態にならない。更新があれば保存してるだけという、見れば分かる感じに自明。
サーバのファイル内容をftpで取ってきてるわけだからファイルの変更がwindowsから行われている必要は全然ない。こいつはサーバ上のファイルを取って来ては比べて保存してるだけ。
ときどきコンソール画面が出てウザいという場合にはWindowsに別ユーザを作ってログオンしてこれをやらせたまま自分は別のユーザでログオンして使ってればー。
時分じゃなくて時までで止めておくようにしても便利かも。手動で呼んでも1時間以内のファイルは全部上書きとかで。
長期で使う場合には年月日で毎日じゃなくて年とか年月とかにも置いておくと一月分とか一年分とかごっそり消せる。
YYYYMMDDとHHMMは適宜対応年月日と対応時分のぶんが増えて行く。
最近とってきたやつ | file |
一個前のコピー | prev | file |
年月日別変更ぶんのコピー | YYYYMMDD | file |
各年月日での時分別変更ぶんのコピー | HHMM | file |
pdumpfsやタイムマシンのように各タイミングから重複リンクしておらず
変更のあったタイミングのぶんだけなので
特定のタイミングでの特定ファイルは
それより過去の更新時に向かって探索する必要がある。
が、コレにアクセスしようとするときには目の前にコンピューターがあるはずなので、それでどうにかしてください。
ワイルドカードで指定してリストアップすれば用が足りる場合も多いか知れないし。
むしろ変更時点がそうやって判明したほうが、pdumpfsやタイムマシンのように変更のない同じものの山の中から探し当てるより早いかも。
ファイルシステムのデータ実態自体はこんなふうに持っておいて、過去の特定時点のファイルを探し当てるシステムをファイルシステムのドライバに組み込んであれば、pdumpfsやタイムマシンのようにハードリンクで持ってる場合に比べて、ディスク全体のトラバースをするウイルスチェッカやファイル検索のようなものとの親和性は高いような。
pdumpfsのストレージでウイルスチェッカやgoogle desktopが同じファイルの日付別の別名ファイルを重複チェックし始めてさっぱり使いものにならなくなっちゃうんですよね。
- savefile.bat ファイルひとつ分の仕事をするバッチコマンド。サーバ名その他はダミーなのでもちろん書き換えて。
set filepath=とset ftphost=とset username=とset password=の初期値設定部分。
- saves.bat 必要なファイルについてsavefile.batを呼ぶバッチの例。これをコントロールパネルの「タスク」から自動実行させる。いや、マシンの起動時だろうがなんだろうが、自動実行させたいタイミングに仕掛けておけば。
最初の cd のディレクトリはこのふたつのbatを置く場所に書き換えてください。
2010-03-08 -- このページ作った。
i16(愛一郎) -- 受託開発お請け出来ます。