Links
Tags
Creators
Details
1.0.0-SNAPSHOT
Compatibility
Changes
ASPbackup 使用說明書
Minecraft Spigot 伺服器進階備份插件 | Java 21 | Spigot 1.20.6+
目錄
1. 安裝與需求
系統需求
| 項目 | 需求 |
|---|---|
| Java | 21 或更高版本 (Temurin/OpenJDK) |
| 伺服器 | Spigot / Paper / Leaf 1.20.6+ |
| 儲存空間 | 備份目標至少需要與來源目錄相同的可用空間 |
安裝步驟
- 從 Releases 下載
ASPbackup-1.0.0.jar - 將 jar 檔案放入伺服器的
plugins/目錄 - 啟動(或重啟)伺服器
- 插件會自動生成
plugins/ASPbackup/config.yml配置檔案 - 編輯配置檔案以符合您的需求
- 執行
/aspbackup reload重新載入配置
目錄結構
plugins/ASPbackup/
├── config.yml # 主配置檔案
├── temp/ # 暫存目錄(壓縮中的備份檔)
├── checkpoints/ # 中斷備份的檢查點檔案
├── logs/ # 備份日誌檔案
│ ├── backup-2026-08-08.log
│ └── backup-2026-08-09.log
└── backups/ # 本地備份目標(預設,若使用 REMOTE 目標則不會有)
├── ASPbackup-20260808-143022.tar.gz
└── ASPbackup-20260809-080015.tar.gz
2. 快速開始
基本操作
# 手動觸發備份
/aspbackup start
# 查看備份狀態
/aspbackup status
# 查看備份歷史
/aspbackup list
# 重新載入配置
/aspbackup reload
# 查看插件資訊
/aspbackup info
# 查看所有命令
/aspbackup help
自動備份
插件預設啟用啟動備份和關閉備份,無需任何額外設定:
- 伺服器啟動時:延遲數秒後在背景執行備份,不阻塞伺服器
- 伺服器關閉時:收到
/stop命令後攔截關閉,先執行備份,完成後再關閉
定時備份
在 config.yml 中啟用定時備份:
schedule:
enabled: true
interval-minutes: 360 # 每 6 小時備份一次
backup-type: "full"
target-id: "remote-cluster"
quiet-hours:
- "06:00-22:00" # 此時間段內不執行備份
3. 配置檔案詳解
3.1 備份設定 (backup)
backup:
# 伺服器啟動時是否自動備份
auto-on-start: true
# 伺服器關閉時是否自動備份
auto-on-shutdown: true
# 啟動備份的延遲秒數(讓伺服器穩定後再備份)
start-delay-seconds: 10
# 備份主檔案名稱(用於暫存檔命名)
backup-name: "ASPbackup"
# 阻塞式備份超時秒數(防止遠端傳輸失敗時阻塞伺服器)
blocking-timeout-seconds: 120
# 暫存目錄
temp-directory: "plugins/ASPbackup/temp"
# 單次備份最大大小(MB),0 = 無限制
max-backup-size-mb: 0
# 備份完成後是否驗證完整性
verify-after-backup: true
# 壓縮設定
compression:
format: "targz" # "zip" 或 "targz"
level: 9 # 1 (最快) 到 9 (最小)
3.2 備份來源 (sources)
每個來源可設定 category 分類標籤,備份完成後會按分類顯示統計資訊。
backup:
sources:
# 玩家背包資料
- path: "world/playerdata"
name: "玩家背包数据"
category: "player-data"
exclude:
- "**/*.dat"
- "**/*.dat_old"
max-depth: 10
# 玩家統計資料
- path: "world/stats"
name: "玩家统计数据"
category: "player-data"
exclude:
- "**/*.lock"
max-depth: 10
# 玩家進度資料
- path: "world/advancements"
name: "玩家进度数据"
category: "player-data"
exclude:
- "**/*.lock"
max-depth: 10
# 所有插件檔案
- path: "plugins"
name: "所有插件文件"
category: "plugins"
exclude:
- "**/ASPbackup/**" # 排除備份插件自身
- "**/dynmap/web/**"
- "**/*.log"
max-depth: 50
# 插件配置檔案(僅備份設定檔)
- path: "plugins"
name: "插件配置文件"
category: "plugin-configs"
include:
- "**/config.yml"
- "**/config.yaml"
- "**/settings.yml"
- "**/*.properties"
- "**/*.json"
- "**/*.toml"
- "**/*.conf"
exclude:
- "**/ASPbackup/**"
- "**/dynmap/web/**"
- "**/*.db"
max-depth: 30
來源欄位說明:
| 欄位 | 類型 | 說明 |
|---|---|---|
path |
字串 | 相對於伺服器根目錄的路徑 |
name |
字串 | 顯示名稱 |
category |
字串 | 分類標籤,用於備份統計和 tar.gz 內部分類 |
include |
列表 | 僅包含符合這些 glob 模式的檔案(空 = 全部) |
exclude |
列表 | 排除符合這些 glob 模式的檔案 |
max-depth |
整數 | 最大目錄深度 |
3.3 檔案過濾規則 (file-filter)
backup:
file-filter:
# 包含的檔案(glob 模式)
include:
- "**/*"
# 排除的檔案(全域,對所有來源生效)
exclude:
- "**/*.tmp"
- "**/*.lock"
- "**/*.pid"
- "**/ASPbackup/**" # 避免備份的備份
# 最小檔案大小(位元組),0 = 不限制
min-size-bytes: 0
# 最大檔案大小(位元組),0 = 不限制
max-size-bytes: 0
Glob 模式說明:
| 模式 | 說明 | 範例 |
|---|---|---|
* |
匹配任意字元(不含 /) |
*.log 匹配所有 .log 檔案 |
** |
匹配任意目錄層級 | **/ASPbackup/** 匹配所有 ASPbackup 目錄下的檔案 |
? |
匹配單個字元 | region/r.?.?.mca |
3.4 備份目標 (targets)
backup:
targets:
# 遠端分散式目標(傳輸到接收端)
- id: "remote-cluster"
type: "REMOTE"
retention-count: 3
min-free-space-mb: 10240
# 本地目標
# - id: "local"
# type: "LOCAL"
# path: "backups/"
# retention-count: 10
# min-free-space-mb: 1024
# NAS 目標(掛載的網路磁碟)
# - id: "nas"
# type: "NAS"
# path: "/mnt/nas/minecraft-backups/"
# retention-count: 5
# min-free-space-mb: 5120
目標類型:
| 類型 | 說明 |
|---|---|
LOCAL |
本地目錄,path 為相對於伺服器根目錄的路徑 |
NAS |
網路磁碟,path 為絕對路徑(如 /mnt/nas/...) |
REMOTE |
遠端接收端,透過 TCP 傳輸 |
3.5 分散式傳輸設定 (transfer)
transfer:
# 分塊大小(KB)— 用於進度顯示
chunk-size-kb: 1024
# 並行傳輸執行緒數
parallel-threads: 4
# 連線超時(毫秒)
connect-timeout-ms: 10000
# 讀取超時(毫秒)
read-timeout-ms: 30000
# 失敗重試次數
retry-count: 3
# 重試間隔(毫秒)
retry-delay-ms: 5000
# 負載均衡策略:"round_robin" 或 "least_loaded"
load-balance-strategy: "least_loaded"
# 傳輸節點列表
nodes:
- id: "node-1"
host: "127.0.0.1"
port: 9876
auth-token: "remote-cluster"
enabled: true
weight: 1
3.6 檢查點設定 (checkpoint)
checkpoint:
# 啟用中斷續傳
enabled: true
# 檢查點儲存目錄
directory: "plugins/ASPbackup/checkpoints"
# 自動清理超過 N 天的檢查點
max-age-days: 7
3.7 日誌設定 (logging)
logging:
# 日誌級別:"DEBUG"、"INFO"、"WARN"、"ERROR"
level: "INFO"
# 日誌目錄
directory: "plugins/ASPbackup/logs"
# 保留天數
retention-days: 30
# 詳細傳輸日誌
verbose-transfer: false
# 同時輸出到控制台
console-output: true
3.8 磁碟空間監控 (disk-space)
disk-space:
# 可用空間低於此百分比時警告
warn-threshold-percent: 15
# 檢查間隔(秒)
check-interval-seconds: 300
4. 命令參考
命令總覽
| 命令 | 權限 | 說明 |
|---|---|---|
/aspbackup start |
aspbackup.start |
手動開始備份 |
/aspbackup stop <id> |
aspbackup.stop |
停止備份(儲存檢查點) |
/aspbackup status [id] |
aspbackup.status |
查看備份狀態 |
/aspbackup resume <id> |
aspbackup.resume |
從檢查點續傳 |
/aspbackup list |
aspbackup.list |
列出備份歷史 |
/aspbackup nodes |
aspbackup.nodes |
管理傳輸節點 |
/aspbackup verify <id> |
aspbackup.verify |
驗證備份完整性 |
/aspbackup reload |
aspbackup.reload |
重新載入配置 |
/aspbackup about |
aspbackup.command |
顯示插件資訊 |
/aspbackup info |
aspbackup.command |
顯示運行狀態 |
/aspbackup help |
aspbackup.command |
顯示命令幫助 |
詳細命令說明
/aspbackup start
/aspbackup start [--full|--incremental] [--target <目標ID>]
啟動一個新的備份任務。
參數:
--full:完整備份(預設)--incremental:增量備份(僅備份變更的檔案)--target <id>:指定目標(預設使用第一個配置的目標)
範例:
/aspbackup start
/aspbackup start --target remote-cluster
/aspbackup start --full --target local
輸出:
[ASPbackup] 备份任务已启动:a1b2c3d4
/aspbackup stop
/aspbackup stop <任務ID>
安全停止正在執行的備份任務,並儲存檢查點以便後續續傳。
範例:
/aspbackup stop a1b2c3d4
/aspbackup status
/aspbackup status [任務ID]
查看備份任務的狀態。
不帶參數:顯示所有任務摘要 帶任務ID:顯示該任務的詳細進度
範例輸出(摘要):
===== 备份任务 =====
[COMPLETED] a1b2c3d4 - 100.0% - FULL
[PAUSED] e5f6g7h8 - 47.3% - FULL
[RUNNING] i9j0k1l2 - 12.8% - FULL
/aspbackup resume
/aspbackup resume <任務ID>
從中斷的檢查點恢復備份任務。
注意:僅能恢復狀態為 PAUSED 的任務。
/aspbackup list
/aspbackup list [--active|--completed|--failed|--all] [--page <頁碼>]
列出備份任務歷史。
範例:
/aspbackup list --completed
/aspbackup list --all --page 2
/aspbackup nodes
/aspbackup nodes list
/aspbackup nodes status [節點ID]
管理分散式傳輸節點。
/aspbackup verify
/aspbackup verify <任務ID>
驗證已完成備份的 SHA-256 完整性。
/aspbackup reload
/aspbackup reload
重新載入 config.yml,無需重啟伺服器。
注意:正在執行的備份任務不受影響,新配置將在下一次備份時生效。
/aspbackup about
/aspbackup about
顯示插件名稱、版本、作者和網站資訊。
/aspbackup info
/aspbackup info
顯示當前運行狀態,包括:
- 啟動/關閉備份是否啟用
- 定時備份狀態
- 備份來源數量
- 備份目標數量
- 傳輸節點數量
- 活動備份任務數
5. 備份流程說明
5.1 完整備份流程
1. 觸發備份(手動/自動/定時)
│
2. 儲存世界資料(主執行緒)
├── /save-off → 關閉自動存檔
├── /save-all → 強制儲存所有世界
└── /save-on → 重新開啟自動存檔
│
3. 檢查磁碟空間
├── 不足 → 終止備份,記錄錯誤
└── 充足 → 繼續
│
4. 收集檔案(依 category 分類,套用過濾規則)
│
5. 顯示分類統計
──────────────────────────────────
备份内容汇总:
player-data:45 个文件,12.3 MB
plugins:120 个文件,48.7 MB
plugin-configs:15 个文件,0.3 MB
总计:180 个文件,61.3 MB
──────────────────────────────────
│
6. 壓縮檔案(Tar.gz,SHA-256 校驗)
│
7. 傳輸到目標
├── LOCAL → 複製到本地目錄
├── NAS → 複製到網路磁碟
└── REMOTE → TCP 整檔傳輸到接收端(含 ACK 確認)
│
8. 驗證完整性
│
9. 清理舊備份(保留策略)
│
10. 完成 → 記錄日誌
5.2 備份分類系統
備份檔案在 tar.gz 內按 category 分類組織,結構如下:
player-data/
world/playerdata/xxx.dat
world/stats/xxx.json
world/advancements/xxx.json
plugins/
plugins/LuckPerms/...
plugins/Essentials/...
plugin-configs/
plugins/Essentials/config.yml
plugins/LuckPerms/config.yml
- player-data:玩家背包、統計、進度資料
- plugins:所有插件檔案(排除 ASPbackup 自身、大型網頁資源、日誌)
- plugin-configs:僅插件設定檔(.yml, .json, .properties, .toml, .conf)
5.3 啟動/關閉備份機制
- 啟動備份:
save-off/save-all/save-on在主執行緒,備份在背景執行緒非同步執行,不阻塞主執行緒 - 關閉備份:攔截
/stop命令,先執行備份(阻塞),備份完成後再關閉伺服器 - 手動備份:非阻塞,玩家可繼續遊戲
5.4 中斷與續傳流程
備份進行中
│
管理員執行 /aspbackup stop
│
├── 設定中斷標記
├── 在安全的邊界點暫停
├── 儲存檢查點 → plugins/ASPbackup/checkpoints/<id>.properties
└── 任務狀態變為 PAUSED
管理員稍後執行 /aspbackup resume
│
├── 載入檢查點
├── 從中斷位置繼續收集檔案
└── 完成後刪除檢查點
5.5 備份任務狀態
| 狀態 | 說明 |
|---|---|
INITIALIZING |
任務已建立,正在初始化 |
COLLECTING |
正在收集要備份的檔案 |
COMPRESSING |
正在壓縮檔案 |
TRANSFERRING |
正在傳輸到目標 |
VERIFYING |
正在驗證完整性 |
PAUSED |
已暫停,檢查點已儲存 |
COMPLETED |
備份成功完成 |
CANCELLED |
備份已被取消 |
FAILED |
備份失敗 |
6. 分散式傳輸設定
6.1 架構說明
┌─────────────────┐
│ Minecraft 伺服器 │ (ASPbackup 插件)
│ 192.168.1.100 │
└────────┬────────┘
│ TCP 9876
├──────────────┬──────────────┐
▼ ▼ ▼
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ 接收端 #1 │ │ 接收端 #2 │ │ 接收端 #3 │
│ 10.0.0.101 │ │ 10.0.0.102 │ │ 10.0.0.103 │
└─────────────┘ └─────────────┘ └─────────────┘
6.2 負載均衡策略
輪詢(Round Robin):
- 依序將備份分配給每個線上節點
最少負載(Least Loaded):
- 將備份分配給目前傳輸量最少的節點
- 考慮節點權重(weight)
- 節點失敗時增加虛擬負載作為懲罰
6.3 傳輸協議
目前使用整檔傳輸模式,一次傳送完整備份檔案。
握手階段:
插件 → 接收端:4位元組長度 + 協定版本(2B) + token長度(1B) + token + node_id長度(1B) + node_id + capabilities(1B)
接收端 → 插件:4位元組長度 + ACK(4B, 0=成功)
檔案傳輸:
插件 → 接收端:4位元組(任務ID長度) + 任務ID(UTF-8) + 8位元組(檔案大小) + 檔案資料(含進度顯示)
接收端 → 插件:4位元組長度 + 2位元組(任務ID長度) + 任務ID + 1位元組(成功標誌) + 2位元組(訊息長度) + 訊息
接收端輸出:
received-backups/{任務ID}/backup.tar.gz
7. 接收端應用程式
7.1 快速啟動
Windows:
java -jar ASPbackup-receiver-1.0.0.jar --port 9876 --dir D:\receiver\received-backups
Linux/macOS:
java -jar ASPbackup-receiver-1.0.0.jar \
--port 9876 \
--dir /mnt/backups/minecraft \
--token your-secure-token
7.2 接收端目錄結構
receiver/
├── ASPbackup-receiver-1.0.0.jar # 接收端主程式
└── received-backups/ # 接收的備份輸出目錄
└── <任務ID>/
└── backup.tar.gz
7.3 參數說明
| 參數 | 預設值 | 說明 |
|---|---|---|
--port |
9876 |
監聽埠號 |
--dir |
received-backups |
備份輸出目錄 |
--token |
change-me |
認證令牌(必須與插件 auth-token 一致) |
--help |
- | 顯示幫助 |
7.4 安全建議
- 使用防火牆:限制只有 Minecraft 伺服器 IP 可以連接收端埠
- 使用強密碼令牌:避免使用預設的
change-me - 使用 VPN:如果接收端在遠端網路,建議透過 VPN 連接
- 定期更換令牌:定期更新
auth-token並重啟兩端服務
8. 常見問題
Q: 備份失敗,提示 "Insufficient disk space"
原因:目標磁碟空間不足。
解決方案:
- 清理目標目錄的舊備份
- 調整
retention-count減少保留數量 - 降低
min-free-space-mb閾值 - 擴充目標磁碟容量
Q: 備份過程中伺服器 lag
原因:壓縮大型檔案消耗 CPU 和 I/O。
解決方案:
- 降低
compression.level(如從 9 降到 3) - 排除不必要的目錄(如
dynmap/web/) - 使用
quiet-hours在玩家較少的時段執行定時備份 - 增加
start-delay-seconds避免啟動時伺服器尚未穩定
Q: 備份越來越大?
原因:ASPbackup 上一次備份的檔案被包含在本次備份中。
解決方案:
已在配置中預設排除 **/ASPbackup/**,確保備份插件自身的日誌、檢查點、暫存檔不會被重複備份。如果仍有問題,檢查 file-filter.exclude 和各來源的 exclude 是否正確設定。
Q: 如何恢復備份?
備份檔案為標準的 .tar.gz 格式,已按分類組織:
# 解壓縮
tar -xzf backup.tar.gz
# 解壓後結構:
# player-data/world/playerdata/...
# plugins/plugins/...
# plugin-configs/plugins/.../config.yml
將對應目錄內容複製回伺服器即可。
Q: 中斷的備份如何續傳?
# 1. 查看暫停的任務
/aspbackup status
# 2. 續傳
/aspbackup resume <任務ID>
# 3. 如果檢查點損壞,可以刪除檢查點檔案重新開始
rm plugins/ASPbackup/checkpoints/<任務ID>.properties
Q: 如何變更備份目標?
編輯 config.yml 中的 backup.targets 後:
/aspbackup reload
/aspbackup start --target <新目標ID>
Q: 接收端連線失敗?
原因:接收端未啟動、埠號錯誤、防火牆阻擋、或 JAR 版本過舊。
解決方案:
- 確認接收端已啟動並監聽正確埠號
- 檢查
config.yml中nodes.host和nodes.port是否正確 - 確認插件和接收端都是最新版本
- 檢查防火牆是否允許該埠號
9. 權限節點
| 權限節點 | 說明 | 預設 |
|---|---|---|
aspbackup.command |
使用 /aspbackup 命令 |
OP |
aspbackup.start |
手動開始備份 | OP |
aspbackup.stop |
停止備份任務 | OP |
aspbackup.status |
查看備份狀態 | OP |
aspbackup.resume |
續傳中斷的備份 | OP |
aspbackup.list |
列出備份歷史 | OP |
aspbackup.nodes |
管理傳輸節點 | OP |
aspbackup.verify |
驗證備份完整性 | OP |
aspbackup.reload |
重新載入配置 | OP |
aspbackup.* |
所有權限(萬用字元) | OP |
權限設定範例(LuckPerms)
# 給予管理員所有權限
/lp user Admin permission set aspbackup.*
# 給予協管員基本權限
/lp group moderator permission set aspbackup.command
/lp group moderator permission set aspbackup.status
/lp group moderator permission set aspbackup.list
技術支援
- GitHub Issues: https://github.com/HDB-Studio/ASPbackup/issues
- 授權: Apache License 2.0
ASPbackup v1.0.0 — 文件最後更新:2026-08-13
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:cHm45T6u:thlwegHa"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:cHm45T6u:thlwegHa"
}

