Cygwinでln

ファイルを参照したいけど、コピーは作りたくない。そのなときにシンボリックリンクを張るというのは*NIXを使っているとよくやることです。

$ ln -s source_file dist_symbolic_link

*NIXの環境をWindowsに持ってきたCygwinでも当然ln -sは実装されていて、それはショートカットで実現されているようです。Windowsのファイラであるエクスプーラから確認すると、dist_symbolic_linkにあたるものがショートカットとしてあることがわかります。

そしてある日、Cygwinでln -sで-sを付け忘れました。*NIXで-sを忘れるとどうなるかというと、ハードリンクという手法によってファイルがリンクされます。ハードリンクというのはファイルシステムによって実現されるリンク手法で、エントリテーブルと呼ばれるファイル構造が物理的に書いてある部分を編集することになります。これはプラットフォームが完全に異なるWindowsではエラーかなんかになるだろう、と思っていました。

しかし、なんとWindowsでもハードリンクってあるんですね。凄い驚きです。エクスプローラから見てもファイルがそのままあるように見える(ショートカットのように矢印付のアイコンが表示されるわけではない)し、そのハードリンクしたファイルを消しても元のファイルは消えませんでした。
色々調べてみるとWindows2000/XPに搭載されているファイルシステム(NTFS 5/5.1)の機能のようです。詳しくはハードリンク/ジャンクション作成ツールをどうぞ。

September 18, 2005 23:59 fenrir が投稿 : 固定リンク | | このエントリーを含むはてなブックマーク

コメント

コメントする