◆ Windows でのシンボリックリンクはファイルとフォルダで別
◆ ファイルモードのリンクをフォルダに設定しても見れない
◆ その Windows ボリュームを Linux 側でマウントして見るとファイルでもフォルダでも正常に機能する
◆ シンボリックリンクのモードがファイルとフォルダで削除時の動きが異なる
◆ シンボリックリンクのフォルダに del を実行するとリンク先の中身を全部消そうとする

Windows でシンボリックリンクを作る場合はファイルへのリンクかフォルダへのリンクかで作り方が変わります
フォルダに対してのリンクにする場合は mklink コマンドに /D オプションが必要です

mkdir dir
mklink dir2 dir

これだと dir2 が dir へのリンクではあるのですが ファイルモードなのにターゲットはフォルダなのでエクスプローラでも他のソフトでも開けません
開こうとすると .symlink ファイルをどのソフトで開くか聞かれます

……なのですが この状態でも Linux でマウントして使ってると dir2 で dir へアクセスできてました
Linux 側で使うために作ったシンボリックリンクだったので Windows で開けないことに気づかず普通に使っていました
Windows 側で使おうとしたときになぜか開けなくてどこが悪いのか見つけるのにすごく苦戦しました
Linux で普通に開けてるのでシンボリックリンク自体に問題あるなんて思わないですよね

Linux みたいにシンボリックは一種類にすればいいのにファイルとフォルダで違うので Windows だとこういう不便なところがあります



Windows で使えなくてもほぼ問題はなかったのですが どうせならと /D をつけるようにしました
そのせいで別の危険な目に合うことになったのです

もともとは

del symlink & mklink symlink path\to\dir

の path\to\dir の部分を切り替えて symlink でのアクセス先を切り替えれるようにしていました
Linux のツールでパスに symlink を指定しておいて 実体の場所を Windows 側でリンクを切り替えて変更します
シンボリックリンクを作る時に上書きはできないので作る前に削除しています

これをもともとはファイルへのシンボリックとして作っていました
なのでこれで問題はありません


しかし フォルダへのシンボリックリンクに変えると問題がでます
フォルダへのシンボリックリンクを del で削除しようとすると

C:\files\dev4>del symln
C:\files\dev4\symln\*, Are you sure (Y/N)? y

のようなメッセージが出ます
何も考えずに Y を押しかけたのですが よく見るとすごく危険です
シンボリックリンクのリンク先のフォルダの中身全部削除しようとしています

何このコワイ仕様

間違って Y を押していたら全部のファイルが消えてしまっているところでした
ファイルへのシンボリックリンクをフォルダへのシンボリックリンクにすると削除コマンドも変えないといけないので注意しましょう
フォルダの場合は rmdir でできます