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)の機能のようです。詳しくはハードリンク/ジャンクション作成ツールをどうぞ。
コメント
コメントする
- 匿名でのコメントは受け付けておりません。
- お名前(ハンドル名可)とメールアドレスは必ず入力してください。
- メールアドレスを表示されたくないときはURLも必ず記入してください。
- コメント欄でHTMLタグは使用できません。
- コメント本文に日本語(全角文字)がある程度多く含まれている必要があります。
- コメント欄内のURLと思われる文字列は自動的にリンクに変換されます。
- 投稿ボタンを押してエラーがでなければ、投稿は成功しています。反映されるまでには少し時間がかかります。