一個單一的文件如何共享一個單一的文件,而不是像共享分享在遊民
config.vm.synced_folder "host/folder", "box/folder"
整個文件夾?
換句話說就是有辦法有類似:
config.vm.synced_folder "host/folder/file.conf", "box/folder/file.conf"
一個單一的文件如何共享一個單一的文件,而不是像共享分享在遊民
config.vm.synced_folder "host/folder", "box/folder"
整個文件夾?
換句話說就是有辦法有類似:
config.vm.synced_folder "host/folder/file.conf", "box/folder/file.conf"
使用include
標誌在你的rsync args數組:
config.vm.synced_folder "host/folder/", "box/folder/", type: "rsync",
rsync__args: ["--include=file.conf"]
不能同步單個文件。但是,也許你可以通過同步使用RSync與rsync__exclude
選項的文件夾達到同樣的效果:
rsync__exclude
(字符串或字符串數組) - 文件或目錄的列表,從同步排除。這些值可以是任何可接受的rsync排除模式。
默認情況下,流浪使用由供應商技術(例如,VirtualBox,VMWare等)提供的文件/文件夾同步機制。如果提供者不能以每個文件爲基礎進行同步,那麼Vagrant也不能。流浪者也可以使用NFS,RSync或SMB進行文件同步。然而,looking at the code,它似乎每個人都期望每個文件夾的範例。
另一種可能性是使用provisioning選項之一來選擇性地同步適當的文件。如果你想要簡單的方法,你可以使用shell provisioner來複制你需要的文件。對於更有趣的事情,this是在Vagrant中開始使用Puppet的合理指南,您可能對傀儡file
Type感興趣。
由於Benjamin Mosior explained,您只能同步整個文件夾。
作爲一種解決方法,我最終將整個文件夾同步到一個臨時文件夾,並在稍後的步驟中創建一個符號鏈接,我需要它到此臨時文件夾中的單個文件。
可以使用file供應方要做到這一點:
Vagrant.configure("2") do |config|
# ... other configuration
config.vm.provision "file", source: "~/.gitconfig", destination: ".gitconfig"
end
接受的答案(由CDMO)對沒有工作我,但很接近,並讓我找到正確的解決方案,所以歡呼。若要複製只有一個文件,我需要將其更改爲:
config.vm.synced_folder "c:/hostpath/", "/guestpath/", type: "rsync",
rsync__args: ["-r", "--include=file.text", "--exclude=*"]
心靈的參數和它們的順序,-r必須提供和--include必須先--exclude。
如果需要的,而不是-r選項您可以使用-a選項,它結合了-r與權限的保護,所有權等其他幾個選項(參見rsync的幫助)。
我的測試配置:Vagrant 2.0.2/Win10/VirtualBox 5.2.6
爲什麼不共享整個文件夾?或者在只包含一個文件的主機上有一個文件夾? – ydaetskcoR 2015-04-01 16:53:22
我不想覆蓋位置框/文件夾中已存在其他文件。我只想「覆蓋」單個文件 – 2015-04-02 11:51:57
@ydaetskcoR我還有以下情況:我想編輯'nginx.conf'配置文件,將配置文件保存在我的存儲庫中,但不導入整個文件夾。 – nha 2015-06-30 09:36:41