vagrant rsync

vagrantrsyncを使ってファイルを共有できるということでやってみたのでメモ

#以下をVagrantfileに追記
config.vm.synced_folder "./path/to/host/dir", "/path/to/guest/dir", 
    type: "rsync"
    rsync__exclude: [".git/"]

マシンを作成してrsync

$ vagrant up
$ vagrant rsync-auto

デフォルトの方法と違って↑のようにrsync-autoコマンドを叩いておかないと自動で共有されないので注意。この状態で範囲内のファイルに変更を加えると共有されたファイルがrsync-autoしたシェルに出力される。

ファイルの共有はときどき行えばよいということであれば以下のように手動でsyncすることもできる

$ vagrant rsync

また、デフォルトの方法と違う点としてはguest側→host側への同期は行われないという点がある
host側でコードの編集などを行い、guest側でビルドや実行を行うという使い方には適していると思われる。実行環境側での生成物がhost側にsyncされないため分けておけるのがよい。

※追記
これは当然のことだが、vagrant syncを行った場合host側の状態に同期されるためguest側で入れた変更などは全て上書きされてしまう。guest側で開発を行う場合はsyncされるディレクトリ以外の場所を使うように気をつけるべき。