題 如何移動VirtualBox文件?


默認情況下,VirtualBox將所有數據存儲在主目錄下的目錄中。我知道如何更改它但是如何更改現有圖像的位置(不手動編輯VirtualBox.xml)?

我正在使用Windows,並且不想嘗試使用任何NTFS鏈接


152
2018-03-11 10:53


起源


Awww,我打算建議符號鏈接(他們解決一切),但你已經阻止了這個想法...... :( - DMA57361
我根本不信任Windows上的鏈接。雖然NTFS能夠勝任它,但Windows XP對它一無所知,並且已經存在足夠的問題。我可能是不必要的懦夫...... - maaartinus
啊,是的,我不會在XP上觸摸它們。但對7的支持是相當可靠的 - 你仍然需要從cmd行構建它們,但這並不是一件苦差事。我不確定Vista ... - DMA57361
更糟糕的是, XP版的NTFS確實支持硬鏈接,但這些不能跨越卷。顯然,我想將數據移動到不同的分區。 - maaartinus
硬鏈接不能 曾經 跨度卷,只有符號鏈接可以(並且可以用於這種事情,我的用戶文件夾都是符號鏈接到我的第二個硬盤驅動器,例如)。但是,我個人仍然會避免在XP中使用硬鏈接(即使它們是一個選項)。 - DMA57361


答案:


如果您的意思是將所有VM移動到一個全新的位置,您應該只關注這兩個回复:

在這裡複製帖子:

  1. 關閉VirtualBox,備份.VirtualBox \ VirtualBox.xml文件。
  2. 找到現有的“Virtualbox VMs”文件夾,並將包含內容的整個文件夾複製(不移動)到新驅動器E:
  3. 運行VirtualBox,然後依次為每個VM運行:

    3.1右鍵單擊VM名稱,然後從彈出菜單中選擇“刪除”。回答“物理刪除文件?”題。

    3.1b從UI中刪除VM後,您必須關閉VirtualBox,並且   讓它關閉足夠長的後台VBoxSVC任務   超時和終止也。然後,您可以啟動VirtualBox應用程序   再次使用Machine | Add來添加前面刪除的VM   步。

    3.2選擇Machine | Add ..菜單項,導航到驅動器E:上的VM新位置,然後選擇.vbox文件。

    3.3。重複任何剩餘的VM。

  4. 在“文件”|“首選項”中,將默認計算機路徑設置為“E:\ VirtualBox VMs”
  5. 測試每個VM。只有在確定它們都能正常工作後,才能刪除舊的包含VM的文件夾,即刪除“C:\ VirtualBox VMs”。

130
2018-03-13 21:48



當我為鏈接克隆機器執行此操作時,它們無法啟動 - Nam G VU
這對我有用,但我還需要通過編輯來更新每個HardDisk和快照映像的路徑 .VirtualBox\VirtualBox.xml 文件,並進行查找/替換。而且,我只是感動了 Machines 和 HardDisk 文件夾,而不是所有文件 .VirtualBox,因為這是所有全局配置和日誌記錄等。 - Dave Andersen
對於Mac OS X用戶, VirtualBox.xml 位於 ~/Library/VirtualBox/VirtualBox.xml。虛擬機位於 ~/VirtualBox VMs。 - Siu Ching Pong -Asuka Kenji-
Virtual Box 4.3.0+解決了“最後一件大事”,我甚至不需要關閉它 - 說明。 - PCaetano
也許您也可以添加命令行“version”。 1)通過列出現有VM VBoxManage list vms。 2)在VM的名稱旁邊,在大括號內,引用它們的UUID。複製感興趣的一個。有關它的詳細信息,可以通過檢索 VBoxManage showvminfo UUID。 3)通過註銷感興趣的VM VBoxManage unregistervm UUID。 4)移動感興趣的VM的目錄。 5)最後,通過註冊機器 VBoxManage register NameOfVM.vbox  - 顯然,NameOfVM是指VM的實際名稱 .vbox 要註冊的文件。 - Nikos Alexandris


我只有幾個虛擬機,我發現我可以只更改VirtualBox的默認存儲位置,然後克隆我的虛擬機。在我想要的新HD上的新位置創建的克隆。一切都完好無損,快照並且無需重新映射虛擬HD的位置。


57
2018-06-22 11:15



+1我認為這是最好的方法。 VirtualBox以一個整潔的小包為您移動一切。 - Dave Andersen
這是最好的方法,不需要手動cfg編輯 - Bojan Bjelic
你怎麼做到這一點??? - FlipFloop
這應該是公認的答案 - theV0ID
你可以發布一系列步驟嗎? - sancho.s


最簡單的方法不需要刪除虛擬機並弄亂其設置。

  1. 將Virtualbox VMs文件夾複製到新驅動器。

  2. 運行Virtual Box Machine Manager。運行媒體管理器 文件 - >虛擬媒體管理器

    2A。選擇要移動存儲的VM。點擊 發布 按鈕然後 去掉 按鈕。在下一個對話框中,您可以刪除或保留虛擬驅動器。關閉經理,讓您進入Virtualbox Machine Manager。

  3. 選擇剛剛刪除媒體的VM,單擊 設置 按鈕,單擊 存儲 部分。添加媒體控制器(通常為SATA),然後添加硬盤驅動器並選擇現有磁盤並在新位置選擇VD。

  4. 對你正在移動的每台機器重複上述步驟

在新位置啟動虛擬機以進行檢查。下次你去參觀 虛擬媒體管理器,將鼠標懸停在VM條目上將顯示VD的存儲位置。

如果您正在使用它們,請確保將快照文件夾更改為指向新驅動器。每台計算機都有一個快照文件夾設置,VM Manager有一個 默認機器文件夾 設置 文件 - >設置 這也需要改變。

另外我還必須修改xml文件中的路徑。之後,它完美無缺。

注意: 自寫完以來,情況發生了一些變化,請參閱Rob的回答。現在非常簡單。


36
2018-06-10 04:52



我認為這是迄今為止最簡單的方法。 - Peter Perháč


在Mac上,編輯此文件中的路徑:

/Users/pleddy/Library//VirtualBox/VirtualBox.xml

這很容易,presto!


13
2018-02-05 22:41



他正在使用Windows,他也不想編輯VirtualBox.xml。 - ChrisN
不過,這對我很有幫助,因為如果你在Mac上這個問題仍然可以轉讓。 - NReilingh
我是一個mac用戶,谷歌讓我來到這裡,這個解決方案是最簡單的,非常有意義,並為我工作:) - Mohit Singh
我在linux上,並且喜歡這個答案的聲音,但我被文件頂部的警告推遲了。你還會建議直接編輯XML嗎?警告說:**不要編輯此文件。如果在運行任何VirtualBox相關應用程序時對此文件進行更改,則稍後將覆蓋您的更改,而不會生效。使用VBoxManage或VirtualBox Manager GUI進行更改。 ** - craq


更簡單,更簡單。 1)搬到新的位置 2)右鍵單擊從虛擬框菜單中刪除 3)從機器菜單中選擇“添加” 4)找到具有“virtualbox machine definition”類型的8kb Blue圖標。選擇它,它將添加到您的虛擬框列表中。雙擊虛擬機,它的工作原理。


12
2017-07-21 22:18



比這更簡單的是當您想要將VM添加回VirtualBox時,只需單擊即可 *.vbox 文件夾在其文件夾中。 - Joel Mellon
事情如何在三年內發生變化......希望當時這麼容易。在我的回答中添加了註釋,讓他們來看看這個。 - Fiasco Labs
這真的應該更高了。我擺弄,無法使它工作。只需在UI中刪除“無法訪問”的文件,然後雙擊.vbox文件即可使用新位置重新添加。 - wenbert
在Linux主機上不起作用。出現此錯誤:VM會話在嘗試啟動之前已關閉。結果代碼:NS_ERROR_FAILURE(0x80004005)組件:SessionMachine接口:ISession {7844aa05-b02e-4cdd-a04f-ade4a762e6b7} - Max N


在浪費了整整一天這個問題後(在Arch Linux上使用Virtualbox 5.0.12),我終於以thomthom的回答建議的方式解決了問題。對於那些不確定確切過程的人來說,克隆整個機器的命令(包括快照)是:

VBoxManage clonevm --mode all --basefolder </new/path/> --register <VM_to_clone>

獲取VM的名稱

VBoxManage list vms

如有必要,引用路徑和名稱。

最後,檢查一切是否正常並刪除原件。

這就是全部,真的。 無需煩擾xml文件或十六進制編輯器。也不需要使用GUI。

http://www.virtualbox.org/manual/ch08.html#vboxmanage-clonevm


9
2018-01-11 15:33



這是唯一對我有用的答案。應該更高。 - Max N
VM_to_clone 是VM的UUID或名稱。使用給定的命令(使用UUID),創建了一個目錄 /new/path/_<UUID>_ Clone,以及包含的文件也被使用 _<UUID>_ Clone 作為名字。要明確地擁有更好的名稱,請使用 --name "Your preferred name here" 旗。 - Rob W
...並通過CLI刪除原始VM, VBoxManage unregistervm UUID (通過您獲得的VM的UUID VBoxManage list vms,請勿使用VM名稱,因為如果您使用 --name 保留原始名稱,然後您有多個具有相同名稱的VM) - Rob W


和Lucas Pottersky一樣 回答 但是通過命令行(在Windows上替換 vboxmanage 同 VBoxManage.exe):

  1. 列出所有虛擬機:

    vboxmanage list vms
    

    或只運行:

    vboxmanage list runningvms
    

    每台機器輸出名稱和UUID。

    對要移動的每台機器執行以下步驟。

  2. 優雅地關閉它:

    vboxmanage controlvm UUID acpipowerbutton
    
  3. 註銷:

    vboxmanage unregistervm UUID
    
  4. 將虛擬機文件夾移動到新位置。

  5. 通過提供路徑註冊回來 .vbox 文件:

    vboxmanage registervm /path/to/machine.vbox
    

4
2018-03-04 00:43





這對我來說也適用於VirtualBox的MacOS版本(版本4.1.12)。在重新啟動之前,我等待5-10秒讓VirtualBox退出。我查看了Activity Monitor以確保VBoxSVC已正確退出。

如果您不這樣做,您將收到類似於以下內容的錯誤(我正在復制並粘貼來自Windows的其他人的錯誤消息)。如果你收到這個錯誤,那隻是因為你沒有退出VirtualBox或等待足夠長的時間讓VBoxSVC退出。

Failed to open virtual machine located in E:/<path>/<machine_name>/<machine_name>.vbox.

Cannot register the hard disk 'E:\<path>\<machine_name>\Snapshots/{0ece4bff-9185-4cff-9069-b3d1f4536394}.vdi' {0ece4bff-9185-4cff-9069-b3d1f4536394} 
because a hard disk 'C:\<path>\<machine_name>\Snapshots/{0ece4bff-9185-4cff-9069-b3d1f4536394}.vdi' with UUID {0ece4bff-9185-4cff-9069-b3d1f4536394} already exists.

Result Code: E_INVALIDARG (0x80070057)
Component: VirtualBox
Interface: IVirtualBox {c28be65f-1a8f-43b4-81f1-eb60cb516e66}

2
2018-04-15 03:50