[VirtualBox] 使用 VirtualBox 命令列建立虛擬機器的 snapshot

[VirtualBox] 使用 VirtualBox 命令列建立虛擬機器的 snapshot

平常建立 VirtualBox VM 的快照 (snapshot) 通常是透過 UI 來進行,簡單方便,

不過偶爾會有沒辦法使用遠端桌面連回 Linux 的狀況,

這時候就只能用 VirtualBox 的命令列模式來操作了~

以今天的例子來說,因為我已經將機器的環境設定好了,

想要建立一個快照來保存環境~

 

1. 查一下 VBoxManage 的使用說明

VirtualBox 的命令列模式主要使用的程式是 VBoxManage,

如果是用 RPM/yum 裝起來的話,應該都會在預設路徑中找得到,

直接執行 VBoxManage 就可以看到指令的說明,

或是也可以直接參閱 VBoxManage 的網頁說明

testuser@localhost ~ $ VBoxManage
Oracle VM VirtualBox Command Line Management Interface Version 4.3.14
(C) 2005-2014 Oracle Corporation
All rights reserved.
Usage:
VBoxManage [<general option>] <command>
General Options:
[-v|--version]            print version number and exit
[-q|--nologo]             suppress the logo
[--settingspw <pw>]       provide the settings password
[--settingspwfile <file>] provide a file containing the settings password
Commands:
list [--long|-l]          vms|runningvms|ostypes|hostdvds|hostfloppies|
intnets|bridgedifs|hostonlyifs|natnets|dhcpservers|
hostinfo|hostcpuids|hddbackends|hdds|dvds|floppies|
usbhost|usbfilters|systemproperties|extpacks|
groups|webcams
........

 

跟 snapshot 有關的指令就是叫 snapshot:

snapshot                  <uuid|vmname>
take <name> [--description <desc>] [--live] |
delete <uuid|snapname> |
restore <uuid|snapname> |
restorecurrent |
edit <uuid|snapname>|--current
[--name <name>]
[--description <desc>] |
list [--details|--machinereadable]
showvminfo <uuid|snapname>

 

2. 列出目前所有的虛擬機器

用命令列模式一個比較麻煩的地方就是要給虛擬機器的名稱或 UUID,

而不像 UI 模式直接選了虛擬機器操作就好了…

因此常常需要列出目前所有的虛擬機器名稱,方便複製下來後使用~

VBoxManage list vms 就能列出目前所有的 VM 了:

testuser@localhost ~ $ VBoxManage list vms
"CentOS_7" {9d165780-30e2-42d7-87e0-c67b01699bf6}
"VirtualBox Build CentOS 5.4" {f20e59e6-95ca-4020-bbe3-04afdbbd00ea}
"VirtualBox Build CentOS 6.2" {3d7dd42e-f8a3-47a7-b77d-18d6b5e90bde}
"VirtualBox Build CentOS 7.0" {c8b3765e-6246-4847-a7fa-931de397917d}

 

像我想要操作的虛擬機器是 CentOS_7 這台,

所以之後要指定 VM 的部分可以用 CentOS_7,或是它的 UUID {9d165780-30e2-42d7-87e0-c67b01699bf6} 來表示~

用 UUID 表示法的話,有沒有加前後的大括號 {} 都可以~

 

3. 列出目前所有的 snapshot

執行一下 VBoxManage snapshot <VM> list,就可以列出該 VM 目前的 snapshot 了,

以本例來說只有 “Just installed” 一個:

testuser@localhost ~ $ VBoxManage snapshot "CentOS_7" list
Name: Just installed (UUID: c5d6369b-523b-49f0-b8aa-464f8d601702) *

 

如果使用 –machinereadable 的參數的話,

可以秀出比較容易 parse 的輸出結果,方便作自動化處理~

testuser@localhost ~ $ VBoxManage snapshot "CentOS_7" list --machinereadable
SnapshotName="Just installed"
SnapshotUUID="c5d6369b-523b-49f0-b8aa-464f8d601702"
CurrentSnapshotName="Just installed"
CurrentSnapshotUUID="c5d6369b-523b-49f0-b8aa-464f8d601702"
CurrentSnapshotNode="SnapshotName"

 

4. 建立新的 snapshot

使用  VBoxManage snapshot <VM> take <snapshot name> 就能建立新的 snapshot~

也可以在開機的狀況下,多加上 –live 的選項,

不過我通常是建立關機時的 snapshot,製作速度會比開機狀態下快非常多,

而且使用的磁碟空間較小 (因為不用存開機的狀態,例如 RAM 的資料)~

testuser@localhost ~ $ VBoxManage snapshot "CentOS_7" take "Build env ready"
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%

 

以上面關機狀態下建立 snapshot 的例子來說,大約一到兩秒就可以建好 snapshot 了~

可以再用 VBoxManage snapshot <VM> list 的指令確認 snapshot 確實有被建立起來了:

testuser@localhost ~ $ VBoxManage snapshot "CentOS_7" list
Name: Just installed (UUID: c5d6369b-523b-49f0-b8aa-464f8d601702)
Name: Build env ready (UUID: 2e6d6c90-53e4-4abc-93c1-7e8a161e615c) *

 

5. 還原至 snapshot 的狀態

若是要還原至之前建立的 snapshot 狀態,用 VBoxManage snapshot <VM> restore <snapshot name> 就可以了,

這邊的 snapshot name 也同樣可以用名字或是它的 UUID:

testuser@localhost ~ $ VBoxManage snapshot "CentOS_7" restore 2e6d6c90-53e4-4abc-93c1-7e8a161e615c
Restoring snapshot 2e6d6c90-53e4-4abc-93c1-7e8a161e615c
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%

 

以上就是簡單的使用 VBoxManage 指令,來做虛擬機器的 snapshot 建立與回復囉~^^

 

//
//

(本頁面已被瀏覽過 1,028 次)

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料