
VMM備份到Google雲端硬碟:定時匯出、雲端同步和統一重命名腳本
閱讀時間:12分鐘
如果虛擬機器的備份檔案只存在於與虛擬機器相同的 NAS 上,那麼它就不能算是真正的備份。如果這台 NAS 發生故障,所有備份檔案都會遺失。這個儲存環境以 Virtual DSM 虛擬機器的形式運作在 Synology 和 Virtual Machine Manager 上,我們的異地 VMM 備份是由 DSM 自帶的兩個免費工具建構的:在 Virtual Machine Manager 上設定定時匯出,以及使用雲端同步功能同步到 Google 雲端硬碟。設置過程花了一個下午。但找出它為何悄悄停止工作卻花了更多時間,而這正是撰寫這篇 NAS 託管入門文章的原因。以下是有效的設定、導致其失效的檔案名稱問題、修復該問題的小腳本,以及我們自身匯出檔案的審核結果。
SynoPower Club 點: 每個技術支援工程師都聽說過這樣的案例:客戶的備份運作了一年,一切正常,但最終卻什麼都沒恢復。我沒想到自己公司也會遇到這種情況。我們的虛擬機器管理程式 (VMM) 備份作業在介面上看起來一切正常,但一台主機上卻堆積了 1TB 的匯出文件,根本無法清理;而另一台主機則連續 13 天沒有產生任何文件。一切都昭然若揭,所有問題都記錄在一個無人問津的日誌裡。修復只花了一個小時;教訓是:要像對待其他任何作業一樣,按計劃檢查文件是否真的存在於你認為它們應該在的位置。
完整的VMM備份需要哪些條件 #
Virtual Machine Manager 提供三層保護,每一層都針對不同的故障。一個完善的 VMM 備份方案會使用不只一層保護。
| 層 | 副本存放處 | 它能保護你免受什麼侵害 |
|---|---|---|
| 快照 | 與客人音量相同 | 糟糕的更新或客人內部的錯誤 |
| 複製(VMM Pro) | 集群中的另一台NAS。 | NAS 故障,但另一台主機可以快速恢復。 |
| 定時匯出 + 雲端同步 | 異地雲帳戶 | 整個站點癱瘓:火災、竊盜、區域網路勒索軟體攻擊 |
我們已經將六個虛擬機器複製到備用主機上,正如我們在文件中所描述的那樣。 三節點 Synology 虛擬機器集群複製機制會在建築物內保留一份副本。匯出層則會在建築物外保留一份副本。
VMM 定時導出功能的工作原理 #
對於虛擬機器管理器 (VMM) 備份,計畫匯出功能會將虛擬機器(包括磁碟和設定)的完整副本以單一 OVA 檔案的形式寫入共用資料夾。您可以選擇目標資料夾、匯出模式、每日、每週或每月的匯出頻率,以及要保留的最新檔案數量。導出操作會在虛擬機器運作時進行。
有兩條規則很容易被忽略。首先,導出配置和寫入操作是在虛擬機器所在的宿主機器上進行的。 貯存 儲存位置並非其運作所在,而是其實際運作位置。在叢集中,虛擬機器可以運作在一個 NAS 上,而其磁碟卻位於另一個 NAS 上,Virtual Machine Manager 會使錯誤主機上的計畫匯出選項變灰。其次,計畫導出使用的是儲存主機的時鐘。

對話框也會顯示一致性狀態。如果虛擬機器中未安裝 Synology Guest Tool,則匯出結果會保持崩潰一致性,相當於拔掉電源線。這對於大多數工作負載來說都沒問題,而安裝 Guest Tool 後,匯出結果會升級為檔案系統一致性。
為什麼雲端同步會跳過 VMM 備份文件 #
下一步顯而易見的做法是將 Cloud Sync 指向匯出資料夾,並讓它將所有內容上傳到 Google 雲端硬碟。我們照做了,但 VMM 備份檔案始終沒有到達。
原因在於檔案名稱。 Virtual Machine Manager 為每個匯出檔案都新增了一個包含冒號的時間戳記作為檔案名稱:
exp_web-2026-09-25 10:29:51-6f713905-cee2-4647-94d5-a5ce6fbdc585.ova
雲端同步無法將這些名稱上傳到我們的 Google 雲端硬碟,因此所有匯出的檔案都保留在本地。文件本身沒有問題,問題出在某個字元。由於 Virtual Machine Manager 中無法變更匯出時間戳格式,因此必須在匯出和上傳之間進行修正。
有趣的是,只有定時導出才會有時間戳記。從同一選單手動匯出則只會儲存為賓客姓名,例如: spc_4C8G.ova而且雲端同步上傳過程也毫無問題。這就是為什麼快速的手動測試可能顯示整個流程正常,但實際上夜間排程任務卻始終無法上傳到雲端的原因。
四步驟教你如何設定 VMM 備份到 Google 雲端硬碟 #
這是每個儲存虛擬機器的宿主機器上可用的 VMM 備份設定。它需要 Virtual Machine Manager、雲端同步和一個 Google 帳戶;不需要 VMM Pro。
安排出口 #
在儲存虛擬機的宿主機上,開啟 Virtual Machine Manager,選擇虛擬機,選擇“操作”、“匯出”、“計劃”,選擇共用資料夾作為目標位置,並設定匯出時間。將保留設定保留為您希望在本地保留的副本數量。
建立雲端同步任務 #
在雲端同步中,連接 Google 雲端硬碟,並將匯出的共用資料夾同步到雲端硬碟資料夾。設定上傳方向為上傳本機更改,如果您希望雲端保留舊版文件,請勾選「來源文件刪除時,目標文件也不要刪除」選項。
新增重命名腳本 #
將本文中的腳本儲存到 NAS 上,並建立一個任務規劃程序,使其每小時以 root 使用者身分執行一次。該腳本會將已完成的匯出檔案重新命名(不包含冒號),並為每個虛擬機器保留最新的副本。
驗證首次上傳 #
下次匯出後,確認重命名後的檔案出現在匯出資料夾中,雲端同步報告已上傳,且 Google 雲端硬碟中的檔案大小與原始檔案大小一致。

我們 VMM 備份背後的重新命名腳本 #
該腳本是 VMM 備份鏈中唯一自訂的部分,它主要執行兩項操作:一是重命名每個已完成的匯出文件,將冒號替換為短橫線;二是僅保留匯出資料夾中每個虛擬機器的最新副本。它只會修改十五分鐘內未更改的文件,因此不會重命名仍在寫入中的匯出文件。
#!/bin/bash # vm-export-cloud.sh - 使 VMM 匯出可透過 Cloud Sync 上傳。 # # VMM 名稱導出" -YYYY-MM-DD HH:MM:SS- 。 KEEP [--apply] 不使用 --apply 參數時,它只會列印其將要執行的操作。 "$0")")/vm-export-cloud.log" say() { echo "$(date '+%F %T') $*"; [ "$APPLY" = "--apply" ] && echo "1TP18(date' "$LOG"; } run() { if [ "$APPLY" = "--apply" ]; then "$@"; else echo " (dry-run) $*"; fi; } [ -d "$DIR" ] || 1. 重新命名已完成的匯出檔案 find "$DIR" -maxdepth 1 -type f -name '*:*.ova' -mmin +$MIN_AGE_MIN -print0 | while IFS= read -r -d '' full; do if command -v fuser >/dev/n read -r -d '' f; do if command -v fuser >/devn 1000/Full; then 說 "skip (in use): $(basename "$f")"; continue fi new="$DIR/$(basename "$f" | tr ':' '-')" say "rename: $(name" | tr ':' '-')" 說 "rename: $(Vname" | "$new")" run mv -n "$f" "$new" done # 2. 保留每個客戶機最新的已重新命名匯出檔案(時間戳記包含在檔案名稱中){ find "$DIR" -maxdepth 1 -type f -10. "$APPLY" = "--apply" ] || find "$DIR" -maxdepth 1 -type f -name '*:*.ova' -mmin +$MIN_AGE_MIN -printf '%f\n' | tr ':' '-' }_AGE_MIN -printf '%f\n' | tr ':' '-' }' } | sort -u | 's/^(.*)-([0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}-[0-9]{2}-[0-9]{2})-.*\.ova$/\1\t\2\t&/' awk -Fs== -k1,1 -k2,2r | awk -F'\t' -v keep="$KEEP" '{ n[$1]++; if (n[$1] > keep) print $3} $old" run rm -f -- "$DIR/$old" done say "done: $(find "$DIR" -maxdepth 1 -name '*.ova' | wc -l) exports in 1TPmaxdepth 1 -name '*.ova' | wc -l) exports in 1TPmaxdepth 1 -name '*.ova' | wc -l) exports in 1TPmaxdepth, $D $4" free"}')""
首先不帶最後一個參數來運行該指令。在這種模式下,它只會列印出需要重新命名和刪除的內容。輸出結果正確後,再加入使其生效的額外參數來安排任務。我們的任務規劃程式每小時以 root 使用者身分執行一次,命令如下,每個匯出資料夾對應一個任務:
bash /volume1/@vm-export-cloud/vm-export-cloud.sh "/volume3/VM_BK_Export" 3 --apply
冒號規則的一個實用副作用是:雲端同步只有在腳本重命名匯出檔案後才能上傳,而腳本只會重新命名已完成的檔案。未完成的匯出檔案永遠不會上傳到雲端。
腳本如何處理 VMM 備份保留 #
Virtual Machine Manager 有自己的保留設置,其工作原理是記錄它創建的每次導出操作。一旦腳本重新命名文件,Virtual Machine Manager 就無法識別該文件,也不會將其刪除。因此,保留機制轉移到了腳本中,腳本會根據檔案名稱中的時間戳記統計每個訪客的副本數量。
在雲端同步方面,一個複選框決定了 Google 雲端硬碟中的操作。它的措詞很容易被誤解: 當來源資料夾中的檔案被刪除時,目標資料夾中的檔案也不要被刪除。如果取消勾選,Google 雲端硬碟會鏡像 NAS,保留相同的三個副本。勾選後,雲端會保存所有上傳的匯出文件,這樣更安全,不易受到勒索軟體攻擊,但文件會不斷增長,直到您手動清理為止。
我們自身出口審計發現了什麼 #
在此配置之前,我們的VMM備份已經在兩台生產主機上運行了大約一個月。檢查文件而不是儀表板後,發現了三個不同的故障。
- 一台主機上的資料保留功能已悄悄失效。 Virtual Machine Manager 用於追蹤匯出檔案的小型資料庫無法在匯出資料夾中創建,因此每次執行都會記錄錯誤,且舊的匯出檔案從未被刪除。一台主機上堆積了 1TB 的 OVA 文件,導致 97% 內存已滿。
- 最大的客戶停止了出口。 其 84 GB 的匯出檔案已無法放入剩餘空間,因此連續三天匯出失敗,而我們沒有註意到任何警報。
- 三份毫無意義的日程表。 設定變更導致三個匯出計劃的目標位置為空。從那天起,它們每分鐘都會記錄一次無效的共享名稱,超過 20,000 次,並且沒有匯出任何內容,包括此商店的匯出計劃。
正常使用情況下,這些都不會顯示為 VMM 備份故障。虛擬機器運作正常,商店可以接收訂單,複製功能在備用主機上也保留了副本。導出層(唯一的異地副本)只是停止了運行。現在,每次更改計劃後,我們都會檢查匯出資料夾和雲端同步上傳清單。

VMM備份的頻寬和儲存規劃 #
每次 VMM 備份匯出都是完整副本,而非增量備份,因此請在選擇備份計畫之前先確定備份大小。我們的客戶網站大小從 5 GB 的小型網站到 84 GB 的合作夥伴網站不等,而這家商店本身的匯出檔案大小約為 7 GB。所有客戶的每日備份方案加起來,每天上傳的檔案大小將超過 100 GB。
Google 雲端硬碟可讓每位使用者在 24 小時內上傳 750 GB 的文件,單文件最大可達 5 TB,因此容量限制通常不是問題。真正的問題在於上傳時間和雲端儲存空間。如果要在雲端保留每個虛擬機器的三個副本,則需要雲端硬碟每日總空間的三倍,如果雲端保留所有副本,則需要更多空間。對於大型且變化緩慢的虛擬機,每週導出一次通常就足夠了,尤其是在複製機制已經涵蓋日常恢復的情況下。
為什麼我們使用 Synology 工具建立備份 #
此 VMM 備份鏈中的所有元件均隨 DSM 一起提供。 Virtual Machine Manager 匯出虛擬機,Cloud Sync 將其上傳,任務計劃程式運行腳本,而相同的 NAS 裝置則用於儲存檔案並執行儲存服務。無需為每個虛擬機器購買備份代理授權,也無需維護單獨的備份伺服器。
我們付費購買的元件是那些能夠增加主機之間保護的元件:a VMM Pro授權 用於複製到備用伺服器,以及 Virtual DSM 授權 為額外的DSM賓客準備。如果您正在決定需要哪個版本,我們的 Virtual Machine Manager 與 VMM Pro 的比較 涵蓋了。
VMM備份限制和注意事項 #
導出操作是在某一時刻創建的完整副本。如果沒有虛擬機器工具,匯出結果將保持崩潰一致性,因此虛擬機器內部的資料庫在斷電後能夠像正常情況一樣復原。至少對最重要的虛擬機器進行一次復原測試。
從雲端還原 VMM 備份意味著需要先下載整個檔案。在一般的辦公室網路連線下,匯出 84 GB 的檔案需要幾個小時,因此雲端備份適用於災難恢復,而非日常錯誤。快照和複製功能可以更快地處理這些錯誤。
雲端同步功能可以在上傳檔案前加密,我們建議對儲存客戶資料的訪客啟用此功能。請將加密密碼保存在與您所保護的 NAS 裝置無關的位置。
最後,重命名腳本依賴於導出名稱格式。如果未來的 Virtual Machine Manager 更新更改了格式,腳本將無法匹配檔案。運行測試模式是確認更新後腳本仍能辨識匯出檔案最快的方法。
經常問的問題 #
將 VMM 備份到 Google 雲端硬碟是否需要 VMM Pro? #
不。計劃匯出功能包含在免費的 Virtual Machine Manager 版本中,雲端同步和任務規劃程式則隨 DSM 一起提供。 VMM Pro 增加了主機間複製功能,這是一個獨立的層。
為什麼雲端同步無法上傳我的 VMM 匯出檔案? #
Virtual Machine Manager 會在每個匯出檔案名稱中加入帶有冒號的時間戳,導致 Cloud Sync 無法將這些檔案名稱上傳到我們的 Google 雲端硬碟。將最終檔案名稱中的冒號去掉即可解決此問題。
Virtual Machine Manager 將計劃匯出保存在哪裡? #
儲存任務位於客戶機儲存所在主機的共用資料夾中,而不是客戶機運作所在的主機上。調度任務只能在該儲存主機上配置。
VMM備份匯出是否一致? #
如果沒有 Synology Guest Tool,導出操作會因崩潰(例如突然斷電)而失效。在虛擬機器內部安裝 Guest Tool 可以確保匯出檔案的檔案系統一致性。
我應該保留多少份匯出副本? #
我們在NAS上保留每個虛擬機器的最新3個副本。雲端可以根據雲端同步選項,鏡像這些副本或保留所有副本。
腳本會上傳未完成的匯出檔案嗎? #
不,它只會重命名 15 分鐘內未更改的文件,而且雲端同步只有在文件重命名後才能上傳匯出文件。
VMM每日備份會佔用多少頻寬? #
每次匯出都是對整個訪客資料的完整複製。將每天所有訪客資料的匯出大小相加;我們每天的匯出大小都遠超 100 GB,但仍在 Google 雲端硬碟每日 750 GB 的上傳限制之內。
如果沒有異地 VMM 備份,複製就足夠了嗎? #
複製功能可防止 NAS 設備故障,同時將副本保留在同一棟建築物內。異地匯出功能可以防止整個網站的資料遺失,因此兩者結合使用效果最佳。
參考資料和影片教程 #
- Virtual Machine Manager 中的虛擬機知識中心文章,涵蓋出口相關內容。
- 雲端同步幫助包括同步方向和任務設定。
- Google 雲端硬碟的儲存空間與上傳限制每日上傳限制為 750 GB。
- Synology VMM 白皮書關於虛擬機器的資料保護層。
- DSM 中的任務排程程序,以便將重新命名腳本作為計劃任務運行。
本教學包含以下工具的影片:雲端同步,以及在 Synology NAS 上匯出和移轉虛擬機器。
想在異地備份的基礎上,在主機之間新增複製功能嗎?獲取… VMM Pro授權或閱讀本網站其他部分的運作方式 我們的 NAS 主機託管 101 系列.