fsutil - ハードリンクについて その2

 ご存知の方も多々いらっしゃるとは思いますが、WindowsXPには "fsutil.exe" と言うものが存在します。
 詳細については検索してもらったり、コマンドプロンプトから usage を参考にしつつ利用してもらった方が間違いないので省略しますが、名前から推測できるようにファイル操作関連のユーティリティツールのようです。

 機能の一つとして、ハードリンクを作成する事ができます。例えば、 "aaa.txt" と言うファイルを用意しておき、コマンドプロンプトから、
fsutil hardlink create bbb.txt aaa.txt
fsutil hardlink create ccc.txt aaa.txt
のように入力すると、 "bbb.txt" と "ccc.txt" と言うファイルが作成されます。
 表面上は普通のファイルに見えますが、実際には実体がなく、 "aaa.txt" が実体として扱われる事になります。言い方を変えると、 "bbb.txt" と "ccc.txt" は "aaa.txt" へのリンクとなります。( "bbb.txt" と "ccc.txt" が存在する状態で、実体である "aaa.txt" を消したらどうなるの?とかもありますが、気になったら試して見て下さい。雰囲気的には "aaa.txt" は見えなくなりますが、見えないところで存在しているような挙動となり、気持ち悪いものの想定できる動作をしてくれるようです。)

 このような機能を利用する事で、複数の開発プロジェクトなどにおける共通ファイルの管理などがスマートにできるかも?と言う可能性を調べてみたくなり、テストした事があるのですが、残念な結果になってしまいました。

 テストした内容を簡単に説明しますと、まずハードリンクの動きを見るため、簡易的にメモ帳 "notepad.exe" を利用して参照/更新などをしていた訳ですが、このケースではうまく動作しているように見えました。
 その後、他のエディタから試してみたところ、保存した瞬間に破綻してしまうケースがありました。あくまでも推測に過ぎませんが、エディタには bak ファイルを残す機能があったりするため、保存処理の動作として、保存前のファイルを残しつつ、あらたなファイルとして作成し、その後ファイルを整理するような動作をしていると考えると、そのような動作をしているうちにリンクが切れて(ハードリンクではなくなって)しまうのではないかと思われます。(極シンプルな作りのエディタか、ハードリンクを意識したエディタを用いる必要がある?)

 ただ、参照用途としては問題なくできそうな感じもありましたので、ルール付けをした上での管理であれば可能かもしれませんし、エディタを完全に統一すると言うのも選択肢としてあるかもしれません。とは言ったものの、 MS-DOS から Windows へ移行してきた経緯、自分の作業内容や感覚などを考えると、やっぱりハードリンクを積極的に用いるのは、余り考えたくない。と言うのが率直な感想であり、同時に個人的な結論となりました。(誤操作、事故を起こしてしまう可能性が高そうなので。)

 あまり参考にならないような気もしますが、こんな機能がある事、その機能について調べてみた事などを情報として書いてみました。
--
2010/02/12