Подтвердить что ты не робот

Синхронизированная папка в бродяге не синхронизируется в реальном времени

Я создаю синхронизированную папку на бродяжней машине, как показано ниже в CMD-дамбе, и ожидаю, что всякий раз, когда я обновляю файлы в этой папке на главной машине, обновления будут отображаться и внутри гостевой машины, однако этого не происходит.

Вот дамп и доказательства этого не происходит (я создаю образец файла и изменяю его, меняя текст в нем от test1 до test2):

mypc:~ user$ cd Projects/synctest/
mypc:synctest user$ ls
Vagrantfile
mypc:synctest user$ cat Vagrantfile
# -*- mode: ruby -*-
# vi: set ft=ruby :

VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|

  # always use Vagrants insecure key
  config.ssh.insert_key = false

  # Setup box
  config.vm.box = "coreos-stable"

  # Setup shared folder
  config.vm.synced_folder ".", "/vagrant"

  # Setup memory usage
  config.vm.provider "virtualbox" do |v|
    v.memory = 2048
  end

  # Define `dev` vm
  config.vm.define :dev do |dev|
  end

  if Vagrant.has_plugin?("vagrant-cachier")
    config.cache.scope = :box
  end

end
mypc:synctest user$ echo "test1" > test.txt
mypc:synctest user$ cat test.txt
test1
mypc:synctest user$ vagrant up
Bringing machine 'dev' up with 'virtualbox' provider...
==> dev: Importing base box 'coreos-stable'...
==> dev: Matching MAC address for NAT networking...
==> dev: Checking if box 'coreos-stable' is up to date...
==> dev: Setting the name of the VM: synctest_dev_1429451824339_35638
==> dev: Fixed port collision for 22 => 2222. Now on port 2200.
==> dev: Clearing any previously set network interfaces...
==> dev: Preparing network interfaces based on configuration...
    dev: Adapter 1: nat
==> dev: Forwarding ports...
    dev: 22 => 2200 (adapter 1)
==> dev: Running 'pre-boot' VM customizations...
==> dev: Booting VM...
==> dev: Waiting for machine to boot. This may take a few minutes...
    dev: SSH address: 127.0.0.1:2200
    dev: SSH username: core
    dev: SSH auth method: private key
    dev: Warning: Connection timeout. Retrying...
==> dev: Machine booted and ready!
==> dev: Rsyncing folder: /Users/user/Projects/synctest/ => /vagrant
==> dev: Rsyncing folder: /Users/user/.vagrant.d/cache/coreos-stable/ => /tmp/vagrant-cache
==> dev: Configuring cache buckets...
mypc:synctest user$ vagrant ssh
CoreOS stable (633.1.0)
[email protected] ~ $ cd ../../vagrant/
[email protected] /vagrant $ ls
Vagrantfile  test.txt
[email protected] /vagrant $ cat test.txt
test1
[email protected] /vagrant $ exit
logout
Connection to 127.0.0.1 closed.
mypc:synctest user$ cat test.txt
test1
mypc:synctest user$ echo "test2" > test.txt
mypc:synctest user$ cat test.txt
test2
mypc:synctest user$ vagrant ssh
Last login: Sun Apr 19 13:57:37 2015 from 10.0.2.2
CoreOS stable (633.1.0)
[email protected] ~ $ cd ../../vagrant/
[email protected] /vagrant $ ls
Vagrantfile  test.txt
[email protected] /vagrant $ cat test.txt
test1
[email protected] /vagrant $ echo "hi from guest machine" > test.txt
[email protected] /vagrant $ cat test.txt
hi from guest machine
[email protected] /vagrant $ exit
logout
Connection to 127.0.0.1 closed.
mypc:synctest user$ cat test.txt
test2
mypc:synctest user$

Возможно ли даже синхронизация в реальном времени? Если да, то почему это не синхронизация?

Изменить: OS X 10.8.5, VirtualBox, coreos.

4b9b3361

Ответ 1

В вашем Vagrantfile тип синхронизируемой папки по умолчанию vboxsf, однако, в stagout upgrade up, он показывает тип rsync, я думаю, вам нужно исправить его в файле конфигурации.

Предположим, что вы используете тип rsync, у вас должно быть следующее в Vagrantfile

Vagrant.configure("2") do |config|
  config.vm.synced_folder ".", "/vagrant", type: "rsync",
    rsync__exclude: ".git/"
end

ПРИМЕЧАНИЕ. По умолчанию для параметра rsync__auto установлено значение true, что означает, что rsync-auto будет наблюдать и автоматически синхронизировать эту папку.

Запустите vagrant rsync-auto, и каталог должен быть синхронизирован между хостом и гостем.

Подробнее см. брокерские документы.