Q:在PBS 上,看到很多備份的資料,到底那一份是完全備份?那一份是增量備份?
這個問題正是很多人在剛接觸 Proxmox Backup Server (PBS) 時的疑惑之一:
為什麼備份那麼多份,但每一份看起來都像「完整備份」?到底哪一份是全備?哪一份是增量?
其實這是因為 PBS 的架構與傳統「全備 / 增備 / 差異備份」完全不同。
我們來逐層拆解讓你清楚理解👇
🧩 一、PBS 的備份方式:不是傳統的「全備 + 增備」,而是 去重複快照備份 (deduplicated snapshot)
每一份你在 GUI 上看到的備份(例如 ct/104/2025-10-23T06:02:57Z)
在邏輯上都是一份 完整可還原的快照(snapshot)。
但在物理上,它只會儲存「與前一版本不同的資料塊(chunks)」。
👉 換句話說:
- 從使用者角度:每一份 snapshot 都是「完整備份」。
- 從儲存角度:只有變動的區塊才會新增,其餘共用舊的。
🔬 二、內部原理:Chunk-based Deduplication
PBS 備份時,會將 VM/LXC 的磁碟內容切成很多「chunk」(預設 4 MB 一個),
並且對每個 chunk 計算 SHA-256 雜湊值。
流程如下:
- 備份開始 → PBS 計算每個區塊的 hash
- 若這個 hash 已存在於 datastore(以前備份過),就不再存
- 只新增新的 hash(即變動過的區塊)
所以,雖然你看到有 10 多個時間點:
ct/104/2025-10-22T10:03:00Z
ct/104/2025-10-22T12:02:55Z
ct/104/2025-10-22T14:09:22Z
...
但實際上:
- 第一份(10:03Z)是真正的「全量」資料;
- 之後的每一份只是「變更過的 chunk」,但索引(index.json)仍完整描述整個 VM;
- PBS 在還原時會自動把所有 chunk 拼回完整磁碟映像。
📦 三、檔案結構舉例
在 PBS 的 datastore(例如 /pbs/datastore1)下,每份備份會像這樣:
ct/104/2025-10-22T10:03:00Z/
├── index.json ← 記錄這份備份使用哪些 chunks
├── manifest.blob ← 含 metadata (CPU, RAM, OS type, notes)
├── root.pxar ← 檔案系統的 PXAR 封包
└── ...
但所有備份實際的資料塊(chunks)都共存在:
/pbs/datastore1/.chunks/
如果一個 chunk 在多個備份裡都出現,PBS 只會儲存一份。
🧮 四、如何知道「哪一份是第一次全備」?
嚴格來說:
- PBS 不會標記「這是 full / incremental」;
- 但第一份(最早的時間點)必然是全量備份;
- 之後的備份都是「deduplicated snapshot」(增量式存放)。
你可以在 CLI 檢查備份大小:
proxmox-backup-manager snapshot list datastore1 --backup-id ct/104
會看到每份 snapshot 的 logical size 與 stored size:
| Snapshot | Logical Size | Stored Size | 備註 |
|---|---|---|---|
| 2025-10-22T10:03Z | 1.26 GiB | 1.26 GiB | 首次全量 |
| 2025-10-22T12:02Z | 1.26 GiB | 20 MiB | 增量(只變更區塊) |
| 2025-10-22T14:09Z | 1.26 GiB | 15 MiB | 增量 |
📊 五、在 GUI 中如何判斷
在 PBS GUI → Datastore → Content → 右上角 Columns,勾選「Size」欄位:
- 若看到多份 snapshot 大小接近,但時間差短;
- 那表示實際儲存空間(stored size)是 dedup 之後的結果;
- 實際 datastore 容量不會隨備份數線性增長。
✅ 六、總結對照表
| 傳統備份系統 | PBS 備份機制 |
|---|---|
| 全備 + 增備 + 差異 | 所有 snapshot 都完整可還原 |
| 增備需依賴上一份 | 每份 snapshot 可獨立還原 |
| 容易空間爆炸 | Dedup + 壓縮共用 chunk |
| 備份鏈 (backup chain) 複雜 | 單一 datastore,自動 dedup 管理 |
| 不同版本佔多份空間 | 相同資料只儲存一次 |
💡 實務建議
- ✅ 備份週期頻繁沒問題(每 2 小時一次):
PBS 只會新增有變動的區塊,空間使用非常有效率。 - ✅ 可直接刪除舊版本(PBS 會自動 GC 未用的 chunk)。
- ✅ 可設定 verify job 定期驗證每份 snapshot 是否可讀。