如何共享单个文件,而不是共享整个文件夹,如
config.vm.synced_folder "host/folder", "box/folder"
?
换句话说,有一种方法可以使用:
config.vm.synced_folder "host/folder/file.conf", "box/folder/file.conf"
答案 0 :(得分:4)
您可以使用file配置程序执行此操作:
Vagrant.configure("2") do |config|
# ... other configuration
config.vm.provision "file", source: "~/.gitconfig", destination: ".gitconfig"
end
答案 1 :(得分:3)
使用rsync args数组中的include
标志:
config.vm.synced_folder "host/folder/", "box/folder/", type: "rsync",
rsync__args: ["--include=file.conf"]
答案 2 :(得分:2)
您无法同步单个文件。但也许你可以通过使用RSync同步文件夹和rsync__exclude
选项来达到同样的效果:
rsync__exclude
(字符串或字符串数组) - 要从同步中排除的文件或目录列表。值可以是任何可接受的rsync排除模式。
默认情况下,Vagrant利用提供商技术(例如,VirtualBox,VMWare等)提供的文件/文件夹同步机制。如果提供程序无法基于每个文件进行同步,那么Vagrant也不能。 Vagrant还可以使用NFS,RSync或SMB进行文件同步。但是,looking at the code,似乎每个人都需要每个文件夹的范例。
另一种可能性是使用provisioning选项之一来有选择地同步相应的文件。如果您想轻松一点,可以使用shell provisioner复制所需的文件。对于更有趣的内容,this是在Vagrant中开始使用Puppet的合理指南,您可能对木偶file
Type感兴趣。
答案 3 :(得分:1)
接受的答案(通过cdmo)对我不起作用,但是接近并引导我找到正确的解决方案,所以欢呼。要复制一个文件,我需要将其更改为:
config.vm.synced_folder "c:/hostpath/", "/guestpath/", type: "rsync",
rsync__args: ["-r", "--include=file.text", "--exclude=*"]
请注意参数及其顺序, -r 必须存在且 - 包括必须先于 - 排除。
如果需要,您可以使用 -a 选项将 -r 与其他几个选项结合起来,以保留权限,而不是 -r 选项,所有权等(请参阅rsync帮助)。
我的测试配置:Vagrant 2.0.2 / Win10 / VirtualBox 5.2.6
答案 4 :(得分:0)
作为Benjamin Mosior explained,您只能同步整个文件夹。
作为一种解决方法,我最终将整个文件夹同步到一个临时文件夹,并在稍后的步骤中创建一个符号链接,我需要它到这个临时文件夹中的单个文件。