How to export and import VirtualBox VM images?

In VirtualBox you can create VM and it will store it on a folder inside the Default Machine Folder of VirtualBox.

For instance, after create an ubuntu-headless VM it will create an ubuntu-headless directory with a couple of files and more folders inside.

I want to get this VM working on another system with also VirtualBox, like a duplicate.

Will a simple copy/paste of this VM directory inside Default Machine Folder of the target system work?

TL;DR: How to transfer a VirtualBox image from one system to another?


Copy/pasting the VM files is not the way to go. You need to use the correct export/import feature of VirtualBox.

With the following instructions you will be able to transfer a VM across several different physical machines and it's also a good way to make backups.

Export

Open VirtualBox and enter into the File option to choice Export Appliance...

at the top left corner, then file and export appliance

You will then get an assistance window to help you generate the image.

  1. Select the VM to export
  2. Enter the output file path and name

    be careful with the output path and file name making sure to leave the file extension untouched

    You can choice a format, which I always leave the default OVF 1.

  3. Finally you can write metadata like Version and Description

Now you have an OVA file that you can carry to whatever machine to use it.

Import

Open VirtualBox and enter into the File option to choice Import

You will then get an assistance window to help you loading the image.

  1. Enter the path to the file that you have previously exported

    chose the previously generated file

  2. Then you can modify the settings of the VM like RAM size, CPU, etc.

    give a configuration according to your system, not all of it but enough

    My recommendation on this is to enable the Reinitialize the MAC address of all the network cards option

  3. Press Import and done!

Now you have cloned the VM from the host machine into another one


Here's the procedure for exporting a virtualbox VM via the command line:

First, use vboxmanage list vms to determine which box you want to export, e.g.

$ vboxmanage list vms
"vpn-client" {99378e99-d5c4-4bea-87ab-ca5ab28febea}
"vpn-client_1" {409eaa40-59c2-4259-9188-eef7479f1b91}
"kohadevbox_default_1430411165168_43224" {e9aa10d9-8aa3-4186-a39b-014b2c3589dc}
"kohadevbox_default_1431032598419_15901" {f384ba7e-d842-421e-b194-70a9573479eb}
"bc-koha-git" {76ad3f69-4acb-4332-b4a2-bf929a281f8f}
"nekls-git-29295" {68bb8720-e12b-49b9-a137-65bff75be66d}
"bc-kohaclone-git" {8b049d97-ff3b-4799-87e0-bda26f822ae0}
"bc-anthrolit-git" {dc435bbe-ded0-4cb2-baf3-4e7c6532fdf8}
"bc-maplleaf-git" {5a6c1e94-766f-4f93-96dc-8da07b0addd8}
"bc-mapleleaf2-git" {4aee2010-c834-4acc-971d-606ec950c938}
"Ubuntu VPN Client" {a0cf4d62-94ad-4d2e-ae0d-2bd2fc2765ae}
"kohadevbox_jessie_1449028830412_79167" {57ab8e8c-4e1a-452c-b324-cd0ae84374ba}
"kohadevbox_wheezy_1449030179528_35330" {ec8e3493-543d-424c-bf51-3ac5601a26ff}
"kohadevbox2_jessie_1463457128498_11997" {00f0d140-7c77-42f8-8512-92e4dded9c37}

In this case, I'm going to export vpn-client_1

$ vboxmanage export vpn-client_1 -o vpn-client_1.ova                                                                  
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%

To import, use

vboxmanage import vpn-client_1.ova

The -n option will prompt you for import options; see vboxmanage --help for details.


As an alternative, there's also a command line utility called VBoxManage. It'll likely reside in your /usr/share/virtualbox/ folder. Use VBoxManager export and VBoxManager import.