メモ > サーバ > 各論: Vagrant > フォルダ同期
フォルダ同期
初期状態では C:\Users\refirio\Vagrant\centos7 の内容と /vagrant の内容が同期している
以下のように指定すると、任意の場所を同期させることができる
(この場合、C:\Users\refirio\Vagrant\centos7\code の内容と /var/www/html/code の内容が同期している)
config.vm.synced_folder "./code", "/var/www/html/code"
開発時はバーチャルホストを設定して、C:\Users\refirio\Vagrant\centos7\code と /var/www/vhosts を丸ごと同期させたりすると便利
以下はVagrantfileの設定例
config.vm.synced_folder "./code", "/var/www/vhosts"
開発時はWindowsのhostsファイルを編集して
http://refirio.localhost/
のようなURLでアクセスすると良さそう
■共有フォルダをNFSにする
VagrantでECCubeなどを使うと非常に重いが、大量のファイルがある場合に共有フォルダの同期に時間がかかっている可能性がある
vagrant-winnfsd プラグインを導入して共有フォルダをNFSに指定すると、動作が早くなる可能性がある
>vagrant halt … 起動している場合は終了させる
>vagrant plugin install vagrant-winnfsd … プラグインをインストール
Vagrantfile で以下のように設定する
config.vm.synced_folder "./code", "/var/www"
↓
config.vm.synced_folder "./code", "/var/www", type: "nfs"
通常どおり起動する
>vagrant up
起動時にWindowsのネットワークの警告が表示されたが、そのまま許可して進めた
これで使用中の動作が早くなり、起動自体も早くなった
Vagrant(VirtualBox)でディスクアクセスが遅い問題の対処法
https://masshiro.blog/vagrant-laravel-slow/
Vagrant 事始め 05 - 共有フォルダを設定する - Qiita
https://qiita.com/centipede/items/5b3cb4965618993cefec
Windows + vagrant環境にはvagrant-winnfsdがおすすめ(一部難あり) | Blog | riatw.me
https://riatw.me/blog/windows_vagrant_winnfsd.html
■特定フォルダの同期除外
※うまく反映されず
Vagrant: synced_folderのrsyncで特定のファイルを除外したい - Qiita
https://qiita.com/suin/items/5de842c6bb9fa7846b63
Vagrantチートシート - Qiita
https://qiita.com/miminashi/items/7bda1598c4a92920c4bd
Vagrantfile を変更して再起動するが、同期状況に変化が無い
config.vm.synced_folder "./code", "/var/www", type: "rsync",
rsync__exclude: [
".git/",
"vendor/",
]
vagrant rsync-auto で rsync__exclude を変更しても反映されない場合 - LANCARD.LAB|ランカードコムのスタッフブログ
https://www.lancard.com/blog/2015/04/07/vagrant-rsync-auto-%E3%81%A7-rsync__exclude-%E3%82%92%E5%A4%...
上記を参考に、以下を試す
vagrant halt
rm .vagrant/machines/default/virtualbox/synched_folders
vagrant up
synched_folders の内容が以下のように変化したが、一切同期しなくなる
{"rsync":{"/vagrant":{"type":"rsync","guestpath":"/vagrant","hostpath":"C:/Users/refirio/Vagrant/development","disabled":false,"__vagrantfile":true,"owner":"vagrant","group":"vagrant"},"/var/www":{"type":"rsync","rsync__exclude":[".git/","vendor/"],"guestpath":"/var/www","hostpath":"C:/Users/refirio/Vagrant/development/code","disabled":false,"__vagrantfile":true,"exclude":[".git/","vendor/"],"owner":"vagrant","group":"vagrant"}}}
↓
{"rsync":{"/vagrant":{"type":"rsync","guestpath":"/vagrant","hostpath":"C:/Users/refirio/Vagrant/development","disabled":false,"__vagrantfile":true,"owner":"vagrant","group":"vagrant"},"/var/www":{"type":"rsync","rsync__exclude":[".git/","vendor/"],"guestpath":"/var/www","hostpath":"C:/Users/refirio/Vagrant/development/code","disabled":false,"__vagrantfile":true,"exclude":[".git/","vendor/"],"owner":"vagrant","group":"vagrant"}},"virtualbox":{}}
synched_folders を削除し、Vagrantfile の内容を元に戻して再起動
以下のように変化し、また同期するようになった
{"rsync":{"/vagrant":{"type":"rsync","guestpath":"/vagrant","hostpath":"C:/Users/refirio/Vagrant/development","disabled":false,"__vagrantfile":true,"owner":"vagrant","group":"vagrant"}},"virtualbox":{"/var/www":{"guestpath":"/var/www","hostpath":"C:/Users/refirio/Vagrant/development/code","disabled":false,"__vagrantfile":true}}}
以下のようにするとどうかと試したが、除外設定が反映されなかった(すべて同期される)
config.vm.synced_folder "./code", "/var/www",
rsync__exclude: [
".git/",
"vendor/",
]
解決せず