vagrant共享文件夾,並解決不能實時同步的問題


配置同步文件夾

在啟動虛擬機的時候,我們可以看到這樣的提示:

==> default: Machine booted and ready!
==> default: Checking for guest additions in VM...
    default: No guest additions were detected on the base box for this VM! Guest
    default: additions are required for forwarded ports, shared folders, host only
    default: networking, and more. If SSH fails on this machine, please install
    default: the guest additions and repackage the box to continue.
    default:
    default: This is not an error message; everything may continue to work properly,
    default: in which case you may ignore this message.
==> default: Configuring and enabling network interfaces...
==> default: Rsyncing folder: /cygdrive/c/Users/Davy/demo/ => /vagrant

先注意最后一行的提示:Rsyncing folder: /cygdrive/c/Users/Davy/demo/ => /vagrant

  • /cygdrive/c/Users/Davy/demo/ 這是宿主機的本地目錄,也就是 Vagrantfile 所在的目錄。
  • /vagrant 是虛擬機內部的路徑
  • Rsyncing 表示同步的方式是 Rsync

在 demo 目錄下創建一些文件,例如 hello.py
執行 vagrant reload,重啟虛擬機
在虛擬機啟動完成后登錄到虛擬機內,操作如下:

$ vagrant ssh
Last login: Sat May  2 16:25:00 2020 from 10.0.2.2
[vagrant@localhost ~]$ cd /vagrant/
[vagrant@localhost vagrant]$ ls
hello.py  Vagrantfile
[vagrant@localhost vagrant]$ python hello.py
helloworld

這種同步方式在大多數情況下都能提供便利,不過也有不足之處:

  • 同步是一次性的,即只有啟動虛擬機的時候執行,也就是說改了代碼必須要重啟一次虛機
  • 單向的,即只能從宿主機同步到虛擬機,也就是說在虛機內的改動不會同步到外面(也就是虛擬機中的這個文件夾在下次重新啟動之后會被覆蓋掉)
  • 需要拷貝文件,如果要同步的文件數量較多,會占用更多的磁盤空間

添加額外的虛擬機共享文件夾

​vagrant的共享目錄類型有:

官網配置文檔地址:https://www.vagrantup.com/docs/synced-folders/virtualbox.html

操作方法

  1. 打開虛擬機目錄的Vagrantfile文件
    在這里插入圖片描述

  2. 用記事本打開

  3. 修改這行代碼
    在這里插入圖片描述

在Windows下不能實時同步的解決方案,smb協議

修改Vagrantfile文件

Vagrant.configure("2") do |config| 
  config.vm.synced_folder "C:/Work", "/home/Code",
    type: "smb",
    smb_host: "192.168.33.1",
    smb_username: "kehao",
    smb_password: "yourpassword",
    mount_options: ["username=kehao","password=yourpassowrd"]
end

參數解釋:

1. smb_host

表示需要與哪台主機共享文件,這里填的是 host 端的 IP 地址,需要以下配置啟動后,才可以使用這個 IP。

config.vm.network "private_network", ip: "192.168.33.11"

這個配置的意思是,guest 主機與 host 主機通信的私有網絡。host 端的 IP 為 192.168.33.1,可以在 cmd 中輸入 ipconfig 查看:

這樣以來,就可以使用 smb 實現 guest 的文件夾和 host 端的文件夾之間的數據同步了。

2.smb_username,smb_password

如果不輸入這個參數的話,在你運行 vagrant up 的時候,vagrant 會提示你輸入 windows 的用戶名和密碼,來實現對 windows 中某文件夾的連接。目前我是在 windows 10 系統上實現的,還請根據實際情況填寫這兩個參數。總之配置了這兩個參數不用每次啟動的時候都輸入 windows 的用戶名和密碼。

3.mount_options

填寫這個參數是為了解決 “wrong fs type” 錯誤,見:https://www.vagrantup.com/docs/synced-folders/smb.html 的 COMMON ISSUES 章節。這是官方提出的錯誤解決方案,反正我這樣子用了,就沒有出現問題了。

錯誤提示:

一些常用技巧:

1.為了防止smb共享剔除不活動的連接需要執行以下命令讓系統不要自動踢掉不活動的連接
net config server /autodisconnect:-1

2.vagrant不會自動刪除共享,要刪除共享使用命令
net share c30268623ba3dedeaa9f098b570dca21 /delete

3. 用 net share 查看文件共享狀態


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM