中途半端なWindowsのシンボリック・リンク [ソフトウェア/PC関係]
先日のHDDクラッシュの件は,新しいHDDは届いたものの,まとまった時間が取れず,まだサルベージ作業には着手できていない。ほとんど見込みはないと思ってるので,急いでも急がなくても,大した違いはない。それより問題は今後である。
取り敢えず,定期的にバックアップを取らなければならない。バックアップ先の容量の問題もあるので,何でもかんでもコピーするというよりは,必要な物だけということになるだろう。となると,バックアップ対象のファイルが,あちこちに散らばっているのは都合が悪い。手っ取り早いのは,特定のディレクトリの下に,バックアップ対象を集めるやり方だ。例えば,\Documentsをバックアップ対象として,その下にサブディレクトリを作って,ファイルを分類して置いておくのである。ただ,今までルートにあったディレクトリは,1階層下になって,アクセスの手間が増えてしまう。そこで考えたのが「リンク」の利用である。
Windowsではあまりポピュラーではないと思うが,Linux等でよく使われる技術に,「シンボリック・リンク」というものがある。これは言わば,ファイルやディレクトリに対して,別名を付けるようなことに当たる。例えば,"C:\Documents\Photo"というディレクトリの別名として,ルート・ディレクトリに"Photo"という名前のリンクを作るのだ。こうすると,例えば
dir c:\Photo
とした時に,"C:\Documents\Photo"ディレクトリの内容をリストすることが出来る。
Windowsの場合,NTFSファイル・システムの機能を利用して実現されているので,NTFSでフォーマットされたHDDでないと利用できない。が,まぁ今どきNTFSが普通だろう。実は,元々「ジャンクション」という似たような機能があったのだが,ディレクトリのみが対象で,ファイルに対するリンクは作ることが出来なかった。それが,Vistaから,よりLinuxのものに近い,「シンボリック・リンク」がサポートされるようになったのである。今回は,ディレクトリのリンクで充分だし,ジャンクションなら以前も使ったことがあったのだが,せっかくなので,新しいシンボリック・リンクを使ってみることにした。
シンボリック・リンクの作成には,"mklink"というコマンドを使う。先ほどの例だと,コマンド・プロンプトで,
mklink /d c:\Photo c:\Documents\Photo
を実行すれば良い。但し,管理者権限が必要なので,コマンド・プロンプトを「管理者として実行」しておく必要がある。リンクが出来ると,"dir"コマンドでは
2015/01/28 23:00 <SYMLINKD> Photo [c:\Documents\Photo]
というように,"<DIR>"の代わりに"<SYMLINKD>"と表示される。Exploreの場合は,フォルダのアイコンにショートカットの矢印が付く。
使用感は,ジャンクションと全く変わらない。ファイルのシンボリック・リンクも作れるようになったし,より便利になった...と思っていたのだが,後日思わぬ落とし穴に気付いた。
シンボリック・リンクを作ったドライブは,ネットワーク共有して,他のPCからもアクセスすることが多いのだが,ネットワーク・ドライブのシンボリック・リンクを開こうとすると,「アクセス出来ない」というエラーになってしまうのだ。先に書いたように,シンボリック・リンクは比較的新しい機能なので,古いアプリケーションでは対応していないことがある...ということは知っていたのだが,Windows付属のExplorerでも同じなのだ。これはどういうことだろう。
Linuxの場合,シンボリック・リンクというのは,文字通り,設定されたパスの文字列へリンクを張るものだ。先の例で言えば,Photoは"c:\Documents\Photo"を参照する。ネットワーク・ドライブは"c:"ではないので,それが問題なのだろうか。
そう考えて,ローカルのCドライブに,"\Documents\Photo"というディレクトリを作ってみたのだが,相変わらずエラーになる。どうも,Windowsのシンボリック・リンクは,ネットワーク共有には対応していないということのようだ。
ジャンクションの場合は,ネットワーク・ドライブでも問題なく利用できるので,結局全て,ジャンクションに作り変えることにした。せっかく機能が増えたと思ったのに,中途半端な仕様である。因みに,ジャンクションは,同じmklinkコマンドで,
mklink /j c:\Photo c:\Documents\Photo
のようにすれば作成できる。管理者権限も必要ないので,こちらの方がお手軽だ。
コメント 0