VirtualBox 作業系統的備份與還原
【摘要】敘述將作業系統的備份檔還原到 VirtualBox 虛擬硬碟的步驟,以及把虛擬硬碟中的系統複製到隨身碟或製成備份檔的方法。
【目錄】
【前言】【新增共用資料夾】
【將備份檔還原到虛擬硬碟】
【在 VB 製作備份檔】
【從 VB 複製到隨身碟】
【後語】
【前言】
一、前面網誌已談過「用 dd 指令備份和還原 Debian GNU/Linux 10 作業系統」,其中有製作備份檔的方法。本文敘述將此等備份檔還原到 VirtualBox(VB)虛擬硬碟的步驟。
二、本文的重點是系統的備份與還原,所以就不詳細說明 VB 的操作了。
三、本例使用的作業系統是自製的 FluxBox Debian GNU/Linux 10。
四、因為要把備份檔放在共用資料夾(Shared Folder),所以先談新增共用資料夾的方法。
【新增共用資料夾】
一、先決條件:客系統要先安裝補充包(Guest Additions)。方法請見「在 Debian GNU/Linux 10 安裝 VirtualBox 6.1」。
二、假設要共用的目錄是自家的 Public。
⒈ 選取 Machine 後,點選右上方的 [Settings]
⒉ 點選左方的 [Shared Folders]
⒊ 點選右上方的新增資料夾圖示
⒋ 在 [Folder Path] 下拉清單中選 [Other…]
⒌ 選自家的 Public 目錄
⒍ 勾選 [Auto-mount]
⒎ [Mount Point] 填入掛載點名稱,本例用 /media/HostPublic 示範
⒏ 點選右下方的 [OK]
⒐ 再點選右下方的 [OK]
三、啟動客系統,開啟檔案管理員,在 /media 目錄中應該有新增 HostPublic 目錄
【將備份檔還原到虛擬硬碟】
一、將備份檔(假設叫 backup.xz)移到主系統的 Public 目錄(這是共用資料夾)。
二、假設 VB 原有一 Machine 叫 Debian10,現新增一個,叫 Debian10-1。
三、在 Debian10 加掛 Debian10-1 的虛擬硬碟。
⒈ VB 主視窗左欄選 Debian10,然後點選右上方 [Settings] 圖示
⒉ [Storage] > [Controller 新增硬碟圖示] > 選 Debian10-1.vdi > [Choose]
⒊ [OK]
可以看到 [Controller] 增加了 Debian10-1.vdi。
四、啟動 Debian10。
這虛擬硬碟是 sda,而 Debian10-1 的是 sdb。
五、準備目標硬碟 sdb。
用 Gparted 新增 sdb1。
六、還原。
先執行 lsblk
確認 sdb1 沒有被掛載;如果有,要先卸下:
sudo umount /dev/sdb1
然後在 sda1 執行:
xz -cd /media/HostPublic/backup.xz | sudo dd of=/dev/sdb1 bs=1M status=progress
-c
:輸出到 standard output。
-d
:解壓縮(Decompress)。
/media/HostPublic/backup.xz
:備份檔的路徑(這是共用資料夾)。
of
:輸出檔(Output File)。用目標分割區為輸出檔。
bs
:讀寫一次的尺寸。預設值是 512 Bytes,速度太慢。用 512K 也可以,但 1M 比較簡單好記。
status=progress
:顯示進度。一個作業系統通常非常地大,要很長的時間,不知道進度會很不耐煩的。
七、修正檔案系統、改 UUID、改名。
啟動 Gparted,
- 選 sdb1,[Partition] > [Check]
- 選 sdb1,[Partition] > [New UUID]
- 選 sdb1,[Partition] > [Label File System]
- 執行
- 選 sdb1,[Partition] > [Information],將 UUID 複製到剪貼簿
八、掛載 sdb1。
若 sdb1 已掛載,但不是在 /mnt,自行修改下面指令;或是先卸下,再掛在 /mnt。此目錄必需原本是空的。
sudo mount /dev/sdb1 /mnt
九、修改 fstab 檔。
以 root 權限,用文書程式開啟 /mnt/etc/fstab 檔,修改 UUID。存檔後,關閉文書程式。
改 fstab 檔,以前用 Ubuntu 系統是必要的,但今在 Debian 系統,似乎不改也沒關係,其它系統就不一定了。不過還是建議改一下,畢竟都一樣比較不容易出錯。
十、sdb 安裝 Grub。
sudo grub-install --boot-directory=/mnt/boot /dev/sdb
--boot-directory
:指定開機檔所在的目錄。
最後一項是要用來開機的裝置;提醒:此處是 sdb 而非 sdb1。
十一、更新開機清單。
⒈ 接下來要改 sdb1 的開機清單,必需在 sdb1 做。但是不用 sdb1 開機而要讓系統認為是用 sdb1 開機,必需用模擬的方式,所以掛上一些模擬要用的目錄。
sudo mount --bind /dev /mnt/dev sudo mount --bind /sys /mnt/sys sudo mount --bind /proc /mnt/proc
⒉ 切換到 sdb1:
sudo chroot /mnt
⒊ 更新 sdb1 的開機清單:
sudo update-grub
十二、再更新 sdb1 的開機清單。
因為之前的更新包含了 Debian10 的虛擬硬碟,而且 Debian10-1 是在 sdb1,現在要去掉 Debian10 並把 Debian10-1 改成 sda1。
Debian10 關機,用 Debian10-1 開機。
sudo update-grub
十三、確認無誤後,將 Debian10 之前加掛的 Debian10-1 去掉。
【在 VB 製作備份檔】
方法和實體硬碟雷同,因為是要複製正在運轉的系統,建議用 Rsync 程式,步驟請見「用 rsync 指令備份和還原 Debian GNU/Linux 10 作業系統」。
【從 VB 複製到隨身碟】
將虛擬硬碟分割區複製到隨身碟的方法和實體硬碟雷同,只差在要 VB 找到隨身碟而已。在 VB 使用隨身碟要安裝擴充包,方法請見「Debian GNU/Linux 10 安裝 VirtualBox 6.1 的方法」。
一、在 VB 中用某一 Machine 開機後,插入隨身碟。
二、在上方選單列選 [Devices] > [USB] > 勾選剛插入的隨身碟。
虛擬硬碟是 sda,隨身碟是 sdb。
三、複製。
因為是要複製正在運轉的系統,建議用 Rsync 程式,步驟請見「用 rsync 指令備份和還原 Debian GNU/Linux 10 作業系統」。
【後語】
虛擬硬碟中的某些參數和實體硬碟不同,譬如網路界面的名稱,所以請多注意。