September 18, 2005

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)の機能のようです。詳しくはハードリンク/ジャンクション作成ツールをどうぞ。

23:59 fenrir が投稿 : 固定リンク | | このエントリーを含むはてなブックマーク | この記事をdel.icio.usでブックマーク | トラックバック
このエントリーのトラックバックURL: http://fenrir.naruoka.org/mt/mt-tb.cgi/427
コメント
コメントする









名前、アドレスを登録しますか?
(次回以降コメント入力が楽になります)
  • 匿名でのコメントは受け付けておりません。
  • 名前(ハンドル名可)とメールアドレスは必ず入力してください。
  • メールアドレスを表示されたくないときはURLも必ず記入してください。
  • コメント欄でHTMLタグは使用できません。
  • コメント本文に日本語(全角文字)がある程度多く含まれている必要があります。
  • コメント欄内のURLと思われる文字列は自動的にリンクに変換されます。