Bagaimana cara memindahkan file VirtualBox?

165

Secara default VirtualBox menyimpan semua data dalam direktori di bawah direktori home. Saya tahu cara mengubahnya, tetapi bagaimana cara mengubah lokasi gambar yang ada (tanpa mengedit VirtualBox.xml secara manual)?

Saya sedang mengerjakan Windows dan tidak ingin mencoba menggunakan tautan NTFS .

maaartinus
sumber
4
Ah, saya akan menyarankan symlinks (mereka menyelesaikan Everything ™), tetapi Anda telah memblokir ide itu ... :(
DMA57361
2
Saya sama sekali tidak mempercayai tautan di Windows. Sementara NTFS mampu melakukannya, Windows XP tidak tahu apa-apa tentang itu dan sudah ada cukup banyak masalah dengannya. Saya mungkin pengecut yang sia-sia ...
maaartinus
Ah, ya, saya tidak akan menyentuh mereka di XP. Tetapi dukungan pada 7 cukup solid - Anda masih harus membangunnya dari garis cmd, tapi itu tidak terlalu banyak tugas. Saya tidak yakin tentang Vista ...
DMA57361
Lebih buruk lagi, versi XP NTFS mendukung hardlink, tetapi ini tidak dapat menjangkau volume . Jelas, saya ingin memindahkan data ke partisi yang berbeda.
maaartinus
Hardlink tidak pernah dapat merentang volume, hanya symlink yang dapat (dan dapat digunakan untuk hal semacam ini, folder pengguna saya semua di-symlink ke HDD kedua saya, misalnya). Tapi, secara pribadi saya masih menghindari hardlinks di XP (walaupun itu adalah pilihan).
DMA57361

Jawaban:

138

Jika Anda bermaksud PINDAHKAN semua VM Anda ke lokasi yang sama sekali baru, Anda harus mengikuti 2 balasan ini:

Menyalin kiriman di sini:

  1. Matikan VirtualBox, buat cadangan file .VirtualBox \ VirtualBox.xml Anda.
  2. Temukan folder "Virtualbox VMs" yang ada, dan salin (jangan pindahkan) seluruh folder dengan konten ke drive baru Anda E:
  3. Jalankan VirtualBox, lalu untuk setiap VM secara bergantian:

    3.1 Klik kanan nama VM dan pilih "Hapus" dari menu popup. Jawab tidak untuk "menghapus file secara fisik?" pertanyaan.

    3.1b setelah menghapus VM dari UI Anda harus menutup VirtualBox, dan membiarkannya cukup lama untuk tugas latar belakang VBoxSVC untuk waktu habis dan berakhir juga. Kemudian Anda dapat memulai aplikasi VirtualBox lagi dan menggunakan Machine | Add untuk menambahkan kembali VM yang dihapus pada langkah sebelumnya.

    3.2 Pilih item menu Mesin | Tambah .., navigasikan ke lokasi baru VM di drive E :, dan pilih file .vbox.

    3.3. Ulangi untuk semua VM yang tersisa.

  4. Di File | Preferensi, setel jalur mesin default ke "E: \ VirtualBox VMs"
  5. Uji setiap VM. Hanya setelah Anda yakin semuanya berfungsi, hapus folder yang berisi VM lama, yaitu hapus "C: \ VirtualBox VMs".
Lucas Pottersky
sumber
Ketika saya melakukan ini untuk mesin yang terhubung-kloning, mereka gagal memulai
Nam G VU
1
Ini bekerja untuk saya, meskipun saya juga perlu memperbarui jalur ke setiap HardDisk dan gambar snapshot dengan mengedit .VirtualBox\VirtualBox.xmlfile, dan melakukan pencarian / ganti. Juga, saya hanya memindahkan Machinesdan HardDiskfolder, tidak semua file yang terkandung di bawah .VirtualBox, karena itu semua konfigurasi global dan logging dan semacamnya.
Dave Andersen
4
Untuk pengguna Mac OS X, VirtualBox.xmlterletak di ~/Library/VirtualBox/VirtualBox.xml. VM terletak di ~/VirtualBox VMs.
Siu Ching Pong -Asuka Kenji-
2
Virtual Box 4.3.0+ telah menyelesaikan "Hal Penting Terakhir", saya bahkan tidak perlu menutupnya - instruksi .
PCaetano
Mungkin Anda bisa menambahkan baris perintah "versi" juga. 1) Daftar VM yang ada melalui VBoxManage list vms. 2) Di samping nama-nama VM, di dalam kurung keriting, UUID mereka dirujuk. Salin yang menarik. Detail tentang itu, bisa diambil via VBoxManage showvminfo UUID. 3) Batalkan registrasi VM yang diminati melalui VBoxManage unregistervm UUID. 4) Pindahkan direktori VM yang diinginkan. 5) Akhirnya, daftarkan mesin melalui VBoxManage register NameOfVM.vbox- jelas, di mana NameOfVM dimaksudkan nama sebenarnya dari .vboxfile VM yang akan didaftarkan.
Nikos Alexandris
58

Saya hanya punya beberapa VM, dan saya menemukan bahwa saya bisa mengubah lokasi penyimpanan default untuk VirtualBox dan kemudian mengkloning VM saya. Klon tempat dibuat di lokasi baru pada HD baru tempat saya menginginkannya. Semuanya utuh, snapshot, dan tidak perlu memetakan ulang lokasi HD virtual.

thomthom
sumber
3
+1 Saya pikir ini adalah metode terbaik. VirtualBox menggerakkan segalanya untuk Anda dalam bundel kecil yang rapi.
Dave Andersen
3
ini adalah cara terbaik, tidak diperlukan pengeditan cfg manual
Bojan Bjelic
bagaimana kamu melakukan ini???
FlipFloop
Ini seharusnya jawaban yang diterima
theV0ID
1
Peringatan: Clone tidak menghasilkan salinan yang sempurna dan dapat memicu kebutuhan untuk memperbarui lisensi untuk perangkat lunak yang diinstal saat id mesin / disk berubah. Menemukan ini ketika memindahkan salinan Quicken lama pada VM ke disk baru.
MZB
36

Metode termudah tidak perlu menghapus mesin virtual Anda dan memperbaiki pengaturannya.

  1. Salin folder Virtualbox VMs Anda ke drive baru.

  2. Jalankan Manajer Mesin Kotak Virtual. Jalankan File Media manager -> Virtual Media Manager

    2a. Pilih VM untuk memindahkan penyimpanan. Klik tombol Lepaskan dan kemudian tombol Hapus . Pada dialog berikutnya, Anda dapat menghapus atau mempertahankan drive virtual. Tutup manajer yang meninggalkan Anda di Manajer Mesin Virtualbox Anda.

  3. Pilih VM yang baru saja Anda hapus media, klik tombol Pengaturan , Klik bagian Penyimpanan . Tambahkan pengontrol untuk media (biasanya SATA) dan kemudian tambahkan hard drive dan pilih disk yang ada dan pilih VD di lokasi baru Anda.

  4. Ulangi untuk setiap mesin yang Anda pindahkan

Matikan mesin virtual Anda di lokasi baru untuk memeriksa. Lain kali Anda mengunjungi Virtual Media Manager , melayang di atas entri VM akan menunjukkan kepada Anda di mana VD disimpan.

Pastikan Anda mengubah folder snapshot Anda untuk menunjuk ke drive baru jika Anda menggunakannya. Setiap mesin memiliki pengaturan folder snapshot dan Manajer VM memiliki pengaturan folder Mesin Default di File -> Pengaturan yang perlu diubah juga.

Selain itu saya juga harus memodifikasi path di file xml. Setelah itu bekerja dengan sempurna.

CATATAN: Segala sesuatu telah sedikit berubah sejak ini ditulis, lihat jawaban Rob. Ini sangat sederhana sekarang.

Laboratorium Fiasco
sumber
2
Saya pikir ini adalah cara termudah untuk melakukan ini.
Peter Perháč
17

JAUH, JAUH lebih sederhana. 1) pindah ke lokasi baru 2) Klik kanan hapus dari menu virtualbox 3) Pilih 'tambah' dari menu mesin 4) Temukan ikon Biru 8kb yang memiliki jenis 'definisi mesin virtualbox'. Pilih dan itu akan ditambahkan ke daftar virtualbox Anda. klik dua kali mesin virtual dan berfungsi.

rampok
sumber
Bahkan lebih sederhana dari ini adalah ketika Anda ingin menambahkan VM kembali ke VirtualBox, cukup klik *.vboxfile di foldernya.
Joel Mellon
2
Bagaimana hal berubah dalam tiga tahun ... Harapan semudah itu. Menambahkan catatan pada jawaban saya agar mereka datang melihat yang satu ini.
Fiasco Labs
1
Ini benar-benar harus lebih tinggi. Saya bermain-main dan tidak bisa membuatnya bekerja. Cukup hapus yang "tidak dapat diakses" di UI dan kemudian klik dua kali file .vbox menambahkannya kembali menggunakan lokasi baru.
wenbert
Tidak bekerja di host Linux. Mendapatkan kesalahan ini: Sesi VM ditutup sebelum ada upaya untuk menyalakannya. Kode Hasil: NS_ERROR_FAILURE (0x80004005) Komponen: Antarmuka SessionMachine: ISession {7844aa05-b02e-4cdd-a04f-ade4a762e6b7}
Maks N
1
Bagian "hapus" dari mthod ini terasa seperti ide buruk yang akan mengakibatkan hilangnya pengaturan Anda tetapi tidak. Metode ini mempertahankan semua pengaturan Anda dan merupakan yang termudah dari semua metode yang saya coba. Ini bekerja pada host Windows 10 dengan tamu Windows 7 dan Windows Sever 2016.
Night Owl
13

Di Mac, edit lintasan di file ini:

/ Pengguna /pleddy/Library//VirtualBox/VirtualBox.xml

Itu mudah, presto!

pcharlesleddy
sumber
3
Dia menggunakan Windows, dan dia juga tidak ingin mengedit VirtualBox.xml.
ChrisN
4
Ini membantu saya, karena pertanyaan ini masih googlable jika Anda menggunakan mac.
NReilingh
Saya adalah pengguna mac dan google mendaratkan saya di sini dan solusi ini adalah yang paling sederhana, masuk akal dan bekerja untuk saya :)
Mohit Singh
Saya di linux, dan menyukai suara jawaban ini, tetapi saya tidak mendapat peringatan di bagian atas file. Apakah Anda masih merekomendasikan untuk mengedit XML secara langsung? Peringatan itu mengatakan: ** JANGAN EDIT FILE INI. Jika Anda membuat perubahan pada file ini saat aplikasi terkait VirtualBox sedang berjalan, perubahan Anda akan ditimpa kemudian, tanpa berlaku. Gunakan VBoxManage atau GUI VirtualBox Manager untuk membuat perubahan. **
craq
11

Setelah menghabiskan satu hari penuh untuk masalah ini (menggunakan Virtualbox 5.0.12 di Arch Linux), saya akhirnya menyelesaikannya dengan cara yang disarankan oleh jawaban thomthom. Bagi mereka yang tidak yakin tentang prosedur yang tepat, perintah yang mengkloning seluruh mesin (termasuk foto) adalah:

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

Dapatkan nama VM dengan

VBoxManage list vms

Jika perlu, kutip jalur dan nama.

Akhirnya, periksa apakah semuanya baik-baik dan hapus yang asli.

Itu saja, sungguh. Tidak perlu repot dengan file xml atau hex editor. Tidak perlu menggunakan GUI, baik.

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

Michael P
sumber
Ini adalah satu-satunya jawaban yang berhasil untuk saya. Harus lebih tinggi.
Max N
2
VM_to_cloneadalah UUID atau nama VM. Dengan perintah yang diberikan (menggunakan UUID), direktori dibuat di /new/path/_<UUID>_ Clone, dan file yang mengandung juga digunakan _<UUID>_ Clonesebagai nama. Untuk secara eksplisit memiliki nama yang lebih bagus, gunakan --name "Your preferred name here"bendera.
Rob W
... dan untuk menghapus VM asli melalui CLI, VBoxManage unregistervm UUID(UUID dari VM yang Anda peroleh VBoxManage list vms, jangan gunakan nama VM karena jika Anda menggunakan --nameuntuk mempertahankan nama asli, maka Anda memiliki beberapa VM dengan nama yang sama)
Rob W
Peringatan: Clone tidak menghasilkan salinan yang sempurna dan dapat memicu kebutuhan untuk memperbarui lisensi untuk perangkat lunak yang diinstal saat id mesin / disk berubah. Menemukan ini ketika memindahkan salinan Quicken lama pada VM ke disk baru.
MZB
Tampaknya ada perintah khusus sekarang: virtualbox.org/manual/ch08.html#vboxmanage-movevm
Michael P
4

Untuk melakukan hal yang sama seperti dalam jawaban Lucas Pottersky tetapi melalui baris perintah (pada Windows ganti vboxmanagedengan VBoxManage.exe):

  1. Daftar semua mesin virtual:

    vboxmanage list vms
    

    atau hanya berlari:

    vboxmanage list runningvms
    

    yang untuk setiap mesin mengeluarkan nama dan UUID.

    Lakukan langkah-langkah berikut untuk setiap mesin yang akan Anda gerakkan.

  2. Matikan itu:

    vboxmanage controlvm UUID acpipowerbutton
    
  3. Batalkan registrasi:

    vboxmanage unregistervm UUID
    
  4. Pindahkan folder mesin virtual ke lokasi baru.

  5. Daftarkan kembali dengan memberikan jalur ke .vboxfile:

    vboxmanage registervm /path/to/machine.vbox
    
mixel
sumber
2

Ini bekerja untuk saya dengan rilis MacOS dari VirtualBox juga (rilis 4.1.12). Saya menunggu 5-10 detik untuk VirtualBox berhenti sebelum meluncurkan kembali. Saya mencari di Activity Monitor untuk memastikan VBoxSVC telah berhenti dengan benar.

Jika Anda tidak melakukan ini, Anda akan mendapatkan kesalahan yang terlihat seperti berikut ini (Saya menyalin dan menempel pesan kesalahan orang lain yang berasal dari Windows). Jika Anda mendapatkan kesalahan ini, itu hanya karena Anda tidak keluar dari VirtualBox atau menunggu cukup lama hingga VBoxSVC berhenti.

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}
withfries2
sumber
2

Di OS X dengan VirtualBox v4.3.14, yang harus saya lakukan adalah mengklik dua kali .vboxfile dari lokasi baru, dan membuka VirtualBox dan menambahkannya ke daftar VM yang tersedia.

Tyson Phalp
sumber
Tolong jangan tambahkan "terima kasih" sebagai jawaban. Sebagai gantinya, pilih jawaban yang menurut Anda bermanfaat.
Scott
Jawaban saya bukanlah 'terima kasih'. Saya mengedit kata-katanya untuk membuatnya lebih jelas. Terima kasih.
Tyson Phalp
2

Ada lokasi penyimpanan default di pengaturan di bawah VirtualBox: http://mattvelic.com/default-vm-lokasi/

Sekarang mati. Mesin wayback memiliki konten:

http://web.archive.org/web/20131116130725/http://mattvelic.com/default-vm-location

... lihat Preferensi di menu File. Melihat! Item pertama di tab Umum adalah Folder Mesin Default. http://web.archive.org/web/20131116130725im_/http://54.225.211.105/wp-content/uploads/2012/11/VB_Preferences.png Saya mengedit lokasi untuk menunjuk ke drive penyimpanan saya, dan dengan cepat membuat ulang saya VM Kali ini VirtualBox membuat file mesin dan VDI di lokasi yang benar. Pelajaran sebenarnya di sini adalah bahwa kadang-kadang solusinya tidak perlu teknis. Saya pikir sebagai profesional TI, kita cenderung berpikir bahwa jawaban atas suatu masalah akan rumit. Buka mata Anda untuk solusi yang jelas!

Rebecca
sumber
Tautan ini sekarang mati. Cobalah untuk tidak memposting tautan sebagai jawaban. Ketika mereka mati, SU dibiarkan dengan cruft untuk membersihkan.
mrtsherman
diperbarui dengan konten dari archive.org
Rebecca
1

Saya rasa ini tidak mungkin.

Anda dapat memindahkan VDI ke lokasi baru, tetapi saya tidak berpikir Anda dapat menghindari modifikasi XML. Sebagai alternatif (tapi itu sebenarnya sama dengan edisi XML) akan membuat mesin virtual baru dengan GUI dan memilih gambar yang dipindahkan karena disk akan sesuai dengan kebutuhan Anda?

Nyonya
sumber
1
Saya melihat kedua xml dan sebenarnya sangat sederhana. Membuat mesin baru tidak baik karena saya ingin mempertahankan pengaturan saya (saya tidak ingat apa yang saya ubah, mungkin sama sekali tidak penting atau tidak).
maaartinus
1

Saya mencoba metode asli (menghapus VDI, melampirkan salinan baru), mendapat pesan bahwa yang lama masih ada, dan tidak dapat melampirkan salinan baru bahkan ketika saya me-restart OS (pada Mac OS X El Capitan).

Cara mengatasinya ada di menu / File / Virtual Media Manager, hapus VDI yang ada. Ini berfungsi bahkan jika ada snapshot; cukup hapus semua snapshot VDI dalam urutan terbalik. Tidak perlu menutup dan membuka kembali VirtualBox.

marty39
sumber
0

Saya tidak pernah menggunakan virtualbox di windows tetapi di ubuntu Anda memindahkan VDI dan di virtualbox GUI Anda mengklik kanan pada VM dan menggunakan Menu Konfigurasi -> penyimpanan di mana Anda dapat mengubah lokalisasi VDI ke tempat Anda memindahkan file. Mengenai definisi file mesin lainnya, Anda memindahkannya dan dalam GUI Anda pergi ke Preferensi dan mengubah posisi direktori mesin default ke direktori yang Anda pindah.

laurent
sumber
0

Saya menggunakan metode ini:

  1. Dari VirtualBox GUI, pilih VM Anda dan lepaskan HDD yang terpasang
  2. Salin file (mis. Vdi) ke lokasi baru
  3. Hasilkan UUID baru untuk .vdi di lokasi baru dengan perintah vboxmanage internalcommand sethduuid "jalur saya ke myhdd.vdi" 6912BF7F-13BB-4E70-A2CA-C92300FEC3DC

    (Dalam contoh sebelumnya gunakan UUID Anda sendiri, atau jangan tambahkan sama sekali: perintah akan membuat otomatis satu. Juga jika Anda menghilangkan langkah ini, saat menambahkan .vdi dari lokasi baru Anda akan mendapatkan kesalahan bahwa UUID sudah ada ).

  4. Sekarang kembali ke GUI VirtualBox, pilih VM Anda dan di Setttings / Storage lampirkan HD (file .vdi) dari lokasi barunya.

dan dilakukan.

Fernando Gonzalez Sanchez
sumber
-1

Dalam Oracle VM VirtualBox (diuji dengan versi 6.0.4), cukup matikan VM Anda -> klik kanan VM di VirtualBox Manager -> klik "Pindahkan ..." -> pilih direktori baru. Itu dia!

Silvio Jäger
sumber
@Moreaki: Omong-omong, "keterbacaan" (dan "terbaca") dieja tanpa "D".
Scott