Vagrant での CentOS のディレクトリを Windows と共有する方法

特に CentOS とかに限った話ではないと思いますが。

やりたいこと

Windows にインストールした Vagrant に立てた CentOS 内のディレクトリを、SSH とかしないで Windows 上のフォルダと共有する。

具体的には例えば、CentOS 上の /var/www を Windows の \Vagrant\embedded\home\hoge\centos\www と同期する。前提として、CentOS 上の /vagrant ディレクトリは、Windows の \Vagrant\embedded\home\hoge\centos と既に同期している。したがって面倒だけどファイルの最低限の受け渡しはここを通じてできる。ただやはり面倒なので、Windows 上でファイルやフォルダの操作をしたらそれが即座に任意の CentOS のファイルやディレクトリに同期されるようにしたい。

方法

mount --bind を使う*1

# mount --bind /vagrant/www /var/www

注意点

当然なのですが、上記コマンドを実行すると、/vagrant/www の内容が /var/www に反映されるわけで、/var/www に予め中身が詰まっていて、かつ /vagrant/www が空っぽだと、/var/www が空っぽになります(umount すれば戻る)。

したがって、同期先のディレクトリにファイルやディレクトリが存在する場合は、同期元のディレクトリにコピーしておいてから mount --bind します*2

*1:config.vm.synced_folder を設定すればいいような……

*2:なんかもっといい方法あるのかな、synced_folders ファイルや config.vm.synced_folder をいじったり、/vagrant にシンボリックリンクを張ればいいような気も

Powered by はてなブログ