Skip to content

Instantly share code, notes, and snippets.

@wakamsha
Last active August 29, 2015 14:03
Show Gist options
  • Save wakamsha/2093ec710aed2b10cf8b to your computer and use it in GitHub Desktop.
Save wakamsha/2093ec710aed2b10cf8b to your computer and use it in GitHub Desktop.
Vagrant でホストOS上で編集したファイルを仮想マシン内の任意のディレクトリに同期する方法

背景

仮想マシン内にあるGitリポジトリのファイルをホストOS上のエディタで編集したいが、ホストOSから仮想マシン内のディレクトリを参照するシンボリックリンクを貼ることは出来ない。 ホストOS上にGitリポジトリを作成して、それに対して仮想マシン内からシンボリックリンクを貼ることは可能だが、仮想マシン内での実行速度が著しく低下するデメリットがあるのが問題。

Vagrant の Rsync Synced Folder を使えば解決

rsync を使ってホストOSとゲストOS間でのファイル/ディレクトリの同期ができる(Vagrant v1.5から)。 vagrant upvagrant reloadvagrant provisionvagrant rsyncコマンドを実行すると指定したディレクトリ間での同期処理が行われる。

設定

Vagrantfileに以下のように記述する。

config.vm.synced_folder "./src", "/var/www/html", type: "rsync", rsync__exclude: [".git/", "vendor/"]

第一引数にホストOSに上で編集するディレクトリ、第二引数に仮想マシン内の同期先ディレクトリを指定する。 同期対象から除外したいファイル/ディレクトリは、rsync__excludeオプションに配列形式で指定すればOK。

ファイル変更の度に同期させたい

vagrant rsync-autoを実行するとファイルの監視状態に入るので、ファイルを更新する度に同期処理がおこなわれる。

参考

[http://www.1x1.jp/blog/2014/03/vagrant-rsync-synced-folder.html]

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment