Синхронизированная папка Vagrant приводит к удалению содержимого - PullRequest
0 голосов
/ 08 ноября 2018

Я пытаюсь добавить и добавить дополнительную синхронизируемую папку помимо значения по умолчанию /vagrant.

Я прочитал документацию , которая указывает, что это должно быть просто:

config.vm.synced_folder "/path/to/somewhere/on/host", "/path/to/guest_directory", create: true

Когда я добавляю это в свой Vagrantfile, а затем повторно делаю его, папка guest_directory появляется в ожидаемом месте на хосте, но она пуста. И папка в гостевой ОС также пуста ... что нарушает мой сайт, потому что это файлы сайта. Интересно, что если я удаляю это из Vagrantfile и снова делаю повторную инициализацию, файлы снова появляются в гостевой ОС, где они были изначально.

Vagrantfile

# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.configure(2) do |config|

  config.vm.box = "ubuntu/xenial64"
  config.vm.network "private_network", ip: "192.168.33.99"

  # NEITHER OF THESE WORK...
  # config.vm.synced_folder "/Users/ESL/Sites/project/web__public_web", "/home/vagrant/web__public_web", create: true
  # config.vm.synced_folder "./web__public_web", "/home/vagrant/web__public_web", type: "rsync", rsync__args: ["--verbose", "--archive", "--delete", "-z"], create: true

  config.vm.provider "virtualbox" do |vb|
    vb.memory = "2046"
  end

end

Вы можете видеть, что я попробовал два разных варианта type: и получил одинаковый неверный результат с обоими. Я также попытался поместить символическую ссылку на файлы проекта внутри /vagrant/, но это тоже не сработало. (Неработающая символическая ссылка появилась в каталоге host os вместо файлов, к которым я хочу получить доступ)

Вот еще пара подробностей о моей настройке, на случай, если они актуальны:

  • В гостевой ОС файлы проекта находятся в / home / vagrant / web__public_web, но корнем документа является / srv / www / ..., который содержит символическую ссылку, указывающую на прежний путь.
  • VirtualBox: версия 5.2.18 r124319 (Qt5.6.3)
  • Бродяга: v2.1.0
  • OSX: 10.13.6

Что я делаю не так?

Ответы [ 2 ]

0 голосов
/ 08 ноября 2018

Я ответил на свой вопрос ...

Оказывается, синхронизация работала все время. Но я неправильно понял направленность синхронизации. Я ожидал, что файлы в гостевой ОС появятся в каталоге хоста, но все наоборот. Пустая папка в каталоге хоста синхронизировалась с гостем и стирала все файлы.

После того, как я вручную скопировал все файлы из гостевого в каталог хоста, те же конфигурации работали, как и ожидалось.

Итог: если вы хотите синхронизировать существующую гостевую папку с файлами в ней, вы должны сначала вручную переместить ее на место в хост-системе.

0 голосов
/ 08 ноября 2018

Каждое монтирование требует уникального идентификатора, если коробка уже построена, вам нужно восстановить ее.

# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.configure(2) do |config|

  config.vm.box = "ubuntu/xenial64"
  config.vm.network "private_network", ip: "192.168.33.99"

  config.vm.synced_folder "/Users/ESL/Sites/project/web__public_web", "/path/where/mounted/on/vm", id: "unique_id_1", type: "rsync", rsync__args: ["--verbose", "--archive", "--delete", "-z"], create: true
  config.vm.synced_folder "/home/vagrant/web__public_web", "/path/where/mounted/on/vm2", id: "unique_id_2", type: "rsync", rsync__args: ["--verbose", "--archive", "--delete", "-z"], create: true

  config.vm.provider "virtualbox" do |vb|
    vb.memory = "2046"
  end

end
...