Есть ли способ несинхронизировать подпапку в Vagrant?

В моей папке проекта есть несколько подпапок, которые не нужно синхронизировать с гостевой машиной. (В частности, папка .git, содержащая > 800 файлов.) Есть ли способ несинхронизировать подпапки синхронизированной папки в Vagrant? Или как я могу предотвратить синхронизацию ненужных папок?

Отключение синхронизации таким образом не работает, когда /vagrant/ синхронизируется по умолчанию:

config.vm.synced_folder "www/kisa/.git/", "/vagrant/www/kisa/.git/", disabled: true

Ответ 1

Обычно (с vboxsf, vmhgfs, NFS,...) синхронизация выполняется путем установки указанного каталога с хоста на гостя. По соображениям производительности не должно быть необходимости помешать некоторому контенту "синхронизировать", поскольку данные не передаются, если вы не получите доступ к нему от гостя. Если вы записываете данные на гостя, но не хотите синхронизировать их с хостом, проще всего записать его в другом месте. =)

Предстоящий Vagrant 1.5 будет включать синхронизированные папки rsync, которые будут поддерживать опцию rsync__exclude. Некоторые плагины облачных провайдеров (aws, digital_ocean,..) уже используют rsync, но поддержка для исключения зависит от поставщика. В некоторых случаях вам просто нужно синхронизировать только нужные папки по отдельности. Вы можете отключить синхронизацию по умолчанию с помощью

config.vm.synced_folder ".", "/vagrant", disabled: true

Ответ 2

Я не могу притворяться, что понимаю это, но метод, показанный на this., кажется, работает для меня для Linux (Ubuntu) гость на хосте Windows 7.

Я хотел использовать его именно так, как он описывает, - чтобы исключить общий каталог node_modules.

В случае исчезновения ссылки сущность:

$ mkdir ~/vagrant_node_modules
$ sudo mount --bind ~/vagrant_node_modules /vagrant/node_modules

так что /vagrant является общим, но /vagrant/node_modules не является.

Кто-то, более осведомленный, чем я, может знать, есть ли проблемы с этим.