Proxmox Backup Server(PBS)負責保護所有 VM 的備份,但 PBS 自己的設定誰來備份?很多人會想到備份 datastore 本身,卻忘了 /etc/proxmox-backup/ 這個目錄:使用者、權限、同步工作、磁帶加密金鑰都在這裡,PBS 主機重灌之後沒有它,等於全部要重新設定,加密過的磁帶甚至讀不回來。
這篇整理 /etc/proxmox-backup/ 裡每個檔案的用途,並對照官方文件與原始碼修正了我原本的清單,最後附上備份與還原的做法。
結論先講:整個目錄一起備份
我原本列了一份要備份的檔案清單,對照官方文件和 PBS 原始碼後發現漏了好幾個,而且每次版本更新都可能新增設定檔。所以最保險的做法是整個 /etc/proxmox-backup/ 目錄打包,不要只挑幾個檔案:
tar czf /root/pbs-etc-$(hostname)-$(date +%Y%m%d).tar.gz \
/etc/proxmox-backup \
/etc/network/interfaces \
/etc/hosts /etc/hostname /etc/resolv.conf \
/etc/fstab \
/etc/systemd/system/*.mount
打包好之後一定要放到 PBS 主機以外的地方,放在同一台主機上,主機掛了就跟著一起不見。
注意:這個壓縮檔裡有密碼雜湊、API Token 密鑰、遠端 PBS 的帳密與磁帶加密金鑰,請當成機密檔案保管,存放位置要限制存取權限,最好再加密。
檔案清單與用途
以下依用途分類。標示「新增」的是我原本清單沒有、核對後補上的。
核心設定
| 檔案 | 用途 |
|---|---|
datastore.cfg | datastore 定義(名稱、路徑、保留原則、維護模式等) |
node.cfg | 節點設定:ACME 憑證網域、HTTP 代理、預設語系等(新增) |
prune.cfg | 定期清理(prune)工作 |
verification.cfg | 定期驗證工作 |
sync.cfg | 同步工作(pull/push)(新增) |
remote.cfg | 遠端 PBS 的連線資訊,含帳號與密碼/Token(新增) |
traffic-control.cfg | 流量限制規則(新增) |
metricserver.cfg | 外部指標伺服器(InfluxDB 等)(新增) |
s3.cfg | S3 端點設定,PBS 4.0 起的 S3 datastore 使用(新增) |
帳號與權限
| 檔案 | 用途 |
|---|---|
user.cfg | 使用者與 API Token 定義 |
shadow.json | 「Proxmox Backup 驗證伺服器」領域使用者的密碼雜湊 |
token.shadow | API Token 的密鑰 |
acl.cfg | 權限設定 |
domains.cfg | 驗證領域(LDAP、AD、OpenID Connect) |
ldap_passwords.json | LDAP/AD 領域的繫結密碼(新增) |
tfa.json | 使用者的兩步驟驗證設定(TOTP、WebAuthn、復原碼)(新增) |
ldap_passwords.json 沒備份到的話,還原後 LDAP 領域會因為繫結失敗而無法同步、無法登入;tfa.json 沒備份到,使用者的兩步驟驗證全部失效,要重新設定。
通知
| 檔案 | 用途 |
|---|---|
notifications.cfg | 通知目標與比對規則 |
notifications-priv.cfg | 通知用的機密資料,例如 SMTP 密碼、Webhook 密鑰 |
磁帶
| 檔案 | 用途 |
|---|---|
tape.cfg | 磁帶機與換帶機 |
tape-job.cfg | 磁帶備份工作 |
media-pool.cfg | 媒體集區 |
tape-encryption-key-config.json | 磁帶加密金鑰的設定(受密碼保護的金鑰) |
tape-encryption-keys.json | 磁帶加密金鑰本身 |
注意:磁帶加密金鑰遺失,加密過的磁帶就再也讀不回來。除了備份這兩個檔案,建議另外用 proxmox-tape key paperkey <指紋> 或網頁介面匯出紙本金鑰(paperkey),和磁帶分開存放。
憑證與金鑰
| 檔案 | 用途 |
|---|---|
proxy.key / proxy.pem | 網頁介面與 API 的 HTTPS 憑證 |
authkey.key / authkey.pub | 簽發登入票證(ticket)用的金鑰 |
csrf.key | CSRF 防護金鑰 |
這幾個在主機名稱、IP 不變的情況下一起還原,PVE 端設定的 PBS 儲存(依憑證指紋驗證)就不用重新設定指紋。換了新主機名稱的話,建議讓 PBS 重新產生憑證,再到 PVE 更新指紋。
授權
| 檔案 | 用途 |
|---|---|
subscription | 訂閱授權資訊 |
訂閱是綁定伺服器 ID 的,換了硬體或重灌後伺服器 ID 會改變,要到 Proxmox 的客戶入口重新發行(reissue)才能在新主機上啟用。
目錄外也要備份的
| 檔案 | 用途 |
|---|---|
/etc/network/interfaces | 網路設定 |
/etc/hosts、/etc/hostname、/etc/resolv.conf | 主機名稱與 DNS |
/etc/fstab | 掛載設定 |
/etc/systemd/system/*.mount | 從網頁介面在磁碟上建立 datastore 時,PBS 是用 systemd mount unit 掛載,不在 fstab 裡(新增) |
PBS 沒有存的東西
有一點常被誤會:用戶端加密的金鑰不在 PBS 上。PVE 備份到 PBS 時如果有啟用加密,金鑰存在 PVE 端的 /etc/pve/priv/storage/<儲存 ID>.enc,PBS 只存加密後的資料。
這個金鑰遺失,備份就算完整也還原不了,所以 PVE 端的金鑰也要另外備份,建議同樣匯出紙本金鑰保存(PVE 網頁介面的儲存設定可以下載金鑰,或用 proxmox-backup-client key paperkey)。
定期自動備份
手動備份很容易忘記,可以寫成排程。例如每天打包一份,再用 rsync 送到另一台主機:
#!/bin/bash
# /usr/local/bin/pbs-etc-backup.sh
DEST=/root/pbs-etc-backup
mkdir -p "$DEST"
F="$DEST/pbs-etc-$(hostname)-$(date +%Y%m%d).tar.gz"
tar czf "$F" /etc/proxmox-backup /etc/network/interfaces \
/etc/hosts /etc/hostname /etc/resolv.conf /etc/fstab \
/etc/systemd/system/*.mount 2>/dev/null
chmod 600 "$F"
# 保留 30 天
find "$DEST" -name 'pbs-etc-*.tar.gz' -mtime +30 -delete
# 送到其他主機(事先設好 SSH 金鑰)
rsync -a "$DEST/" backup@nas.example.com:/backup/pbs-etc/
30 2 * * * /usr/local/bin/pbs-etc-backup.sh
也可以用 proxmox-backup-client 把 /etc/proxmox-backup 備份到另一台 PBS,有版本控管也方便還原。
災難復原步驟
PBS 主機重灌後的大致流程:
安裝與基本設定
安裝相同或更新版本的 PBS,主機名稱與 IP 設成和原本一樣,再還原網路與掛載設定,確認 datastore 所在的磁碟或 ZFS 儲存集區已經掛載(ZFS 用 zpool import)。
停止服務
systemctl stop proxmox-backup-proxy proxmox-backup
還原設定目錄
tar xzf pbs-etc-pbs01-20260313.tar.gz -C /
chown -R root:backup /etc/proxmox-backup
啟動服務並確認
systemctl start proxmox-backup proxmox-backup-proxy
proxmox-backup-manager datastore list
proxmox-backup-manager user list
最後到網頁介面檢查 datastore 內容、同步與驗證工作、通知、磁帶設定都正常,訂閱需要的話重新發行。
如果沒有設定備份、只剩 datastore 的磁碟,也還有救:PBS 3.3 起新增 datastore 時可以指向既有的 datastore 目錄,沿用裡面已經存在的備份資料(但不允許在其他非空目錄建立 datastore),只是使用者、權限、工作排程都要重新設定。
注意:還原時檔案的擁有者與權限很重要,/etc/proxmox-backup 的群組要是 backup,有些檔案(例如 shadow.json、token.shadow)只有 root 可讀。用 tar 打包再解開會保留權限,請勿用會改掉權限的方式複製。
結論
PBS 是最後一道防線,但它自己的設定常常沒人顧。我的建議很簡單:整個 /etc/proxmox-backup/ 打包、每天排程、放到別台主機,再加上磁帶與用戶端加密金鑰的紙本備份,這樣 PBS 主機真的掛了,也能在短時間內原樣復原。
參考資料
- Proxmox Backup Server 文件:Configuration Files
https://pbs.proxmox.com/docs/configuration-files.html - Proxmox Backup Server 文件:Tape Backup(Encryption Keys)
https://pbs.proxmox.com/docs/tape-backup.html - Proxmox Backup Server 文件:Backup Storage
https://pbs.proxmox.com/docs/storage.html - Proxmox Backup Server 原始碼
https://git.proxmox.com/?p=proxmox-backup.git



