vagrant 中的同步文件夹未实时同步
Synced folder in vagrant is not syncing in realtime
我正在 vagrant 机器中设置一个同步文件夹,如下面的 cmd dump 所示,并期望每当我在主机上更新此文件夹中的文件时,更新也会反映在来宾机器中,但这是没有发生。
这是转储和它没有发生的证据(我创建了一个示例文件并通过将其中的文本从 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)
core@localhost ~ $ cd ../../vagrant/
core@localhost /vagrant $ ls
Vagrantfile test.txt
core@localhost /vagrant $ cat test.txt
test1
core@localhost /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)
core@localhost ~ $ cd ../../vagrant/
core@localhost /vagrant $ ls
Vagrantfile test.txt
core@localhost /vagrant $ cat test.txt
test1
core@localhost /vagrant $ echo "hi from guest machine" > test.txt
core@localhost /vagrant $ cat test.txt
hi from guest machine
core@localhost /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
框。
在您的 Vagrantfile
中,同步文件夹类型默认为 vboxsf
,但是,在 vagrant up stdout 中,它显示 rsync 类型,我认为您需要在配置文件中修复它。
假设您使用的是 rsync 类型,您应该在 Vagrantfile
中包含以下内容
Vagrant.configure("2") do |config|
config.vm.synced_folder ".", "/vagrant", type: "rsync",
rsync__exclude: ".git/"
end
NOTE: By default, rsync__auto
is set to true, which means rsync-auto
will watch and automatically sync this folder.
运行 vagrant rsync-auto
并且目录应该在主机和来宾之间同步。
有关详细信息,请参阅 vagrant docs。
我正在 vagrant 机器中设置一个同步文件夹,如下面的 cmd dump 所示,并期望每当我在主机上更新此文件夹中的文件时,更新也会反映在来宾机器中,但这是没有发生。
这是转储和它没有发生的证据(我创建了一个示例文件并通过将其中的文本从 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)
core@localhost ~ $ cd ../../vagrant/
core@localhost /vagrant $ ls
Vagrantfile test.txt
core@localhost /vagrant $ cat test.txt
test1
core@localhost /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)
core@localhost ~ $ cd ../../vagrant/
core@localhost /vagrant $ ls
Vagrantfile test.txt
core@localhost /vagrant $ cat test.txt
test1
core@localhost /vagrant $ echo "hi from guest machine" > test.txt
core@localhost /vagrant $ cat test.txt
hi from guest machine
core@localhost /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
框。
在您的 Vagrantfile
中,同步文件夹类型默认为 vboxsf
,但是,在 vagrant up stdout 中,它显示 rsync 类型,我认为您需要在配置文件中修复它。
假设您使用的是 rsync 类型,您应该在 Vagrantfile
Vagrant.configure("2") do |config|
config.vm.synced_folder ".", "/vagrant", type: "rsync",
rsync__exclude: ".git/"
end
NOTE: By default,
rsync__auto
is set to true, which meansrsync-auto
will watch and automatically sync this folder.
运行 vagrant rsync-auto
并且目录应该在主机和来宾之间同步。
有关详细信息,请参阅 vagrant docs。