26
27

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Windows上のVagrant環境で、ホストOSとゲストOS 間でシンボリックリンクを共有する

Last updated at Posted at 2015-06-28

サーバサイドプログラムの開発をWindows上のVagrant環境で行っているとき、しばしばシンボリックリンクの設定に悩むことがあったのでメモしておきます。

ホストOS (Windows) のシンボリックリンクをゲストOS (Linux)上で認識させる

Windowsのシンボリックリンク機能を使用すれば可能です。
なお、Windows 上で作成できるリンク的な機能としては以下の4種類が存在しますが、ホストOSおよびゲストOS両方で正しく認識できるのはシンボリックリンクのみです。

  • ショートカット
  • シンボリックリンク
  • ジャンクション
  • ハードリンク

シンボリックリンクは「mklink」コマンドを使用して作成することもできますが、「Link Shell Extension」を使用すれば、エクスプローラ上から右クリックメニューで作成することもできて楽です。

ゲストOS (Linux) のシンボリックリンクをホストOS (Windows) 上で認識させる

こちらは、Linuxの「ln」コマンドを使用して普通に作成すれば、ホストOS上でも正しく認識できます。
ただし、Vagrantを管理者権限で起動しておかないと以下のエラーメッセージが表示され、リンクを作成することができません。

$ ln -s Vagrantfile Vagrantfile.link
ln: creating symbolic link `Vagrantfile.link': Protocol error

コマンドプロンプト上から「vagrant up」を実行している場合は、スタートメニュー上のコマンドプロンプトを右クリックして、「管理者として実行」で起動すればOKです。

2015/07/06 追記

注意点として、Linux側でシンボリックリンクを絶対パスで指定した場合、Windows側で正しく参照することが出来ません。
つまり、

$ ln -s Vagrantfile Vagrantfile.link

この書き方はWindowsでもシンボリックリンクとして認識されますが、

$ ln -s /vagrant/Vagrantfile /vagrant/Vagrantfile.link

この書き方だとダメです。
Error Code: 123 のようにエラーになります。

付記

なお、Windows のシンボリックリンクはGitにコミットすることができないので、あらかじめ .gitignore で無視してやる必要があります。

26
27
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
26
27

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?