自动备份 Minecraft 存档到阿里云 OSS 的 MCDR 插件
- 支持备份 Minecraft 存档到阿里云 OSS
- 分片上传、断点续传、上传进度实时回显
- 上传完成后可自动删除本地压缩包,或自动保留最新 N 个本地包
- 插件卸载/重载/服务端关闭时自动检测未完成任务并保存断点,重启后可续传或放弃
- 配置项可通过MCDR指令动态设置
cloudbackup/
cloudbackup.py # 插件入口
config.py # 配置模型
core/
backup_task.py # 备份主流程
core.py # 统一接口导出
resume_util.py # 断点信息管理
continue_abort.py # 断点续传/放弃命令
cmd/
command_tree.py # 命令树注册
list_cmd.py # 备份列表命令
model/
record.py # 备份记录管理
oss/
oss_util.py # OSS 上传工具
utils/
utils.py # 工具函数
resume/ # 断点续传信息存放目录
backups/ # 本地备份/压缩包目录
mcdreforged.plugin.json
requirements.txt
- 本项目依赖
alibabacloud-oss-v2 - 将release中的.mcdr文件放入 MCDR 服务器的 plugins 目录。
- 配置
config.json(首次启动会自动生成)。
同时也提供通过指令修改配置的途径,见下文。
AccessKeyID/AccessKeySecret:阿里云 OSS 访问密钥BucketName:OSS 存储桶名Endpoint:OSS 区域节点(如 oss-cn-hangzhou.aliyuncs.com)BackupPath:OSS 备份路径前缀LocalBackupDir:本地备份目录(如 backups)ZipPrefix:压缩包文件名前缀DeleteLocalAfterUpload:上传后自动删除本地包(true/false)LocalBackupKeepCount:本地最多保留 N 个压缩包BackupSourceDir:自定义需要备份的目录(绝对路径,留空则默认备份 ./server/world 目录)MultipartChunkSize:分片上传的单片大小(单位:字节,建议 5~50MB,默认 10MB)。可通过指令动态调整。
-
!!cb start启动一次备份本命令将配置文件中
BackupSourceDir所指路径的所有文件(session.lock除外)复制到LocalBackupDir并重命名添加随机生成的唯一任务ID(Task ID),随后将此文件夹添加至压缩文件,重命名为[ZipPrefix]-[YYYYMMDD]-[HHmmss]-[Task ID].zip,随后尝试分片上传。分片大小可以通过配置文件中的MultipartChunkSize指定。 -
!!cb stop请求停止备份 -
!!cb list查看云端备份列表 从云端获取文件列表 -
!!cb status查看当前备份状态 -
!!cb history查看本地备份历史 -
!!cb config <项> <值>设置配置项 -
!!cb continue <id>断点续传指定任务 -
!!cb abort <id>放弃断点任务
-
!!cb config bucketName my-bucket -
!!cb config region cn-hangzhou此配置会自动转义为
Endpoint -
!!cb config localBackupPath backups -
!!cb config fileNamePrefix world -
!!cb config deleteLocalAfterUpload true/false设为true时,每当一个备份文件上传完毕,会尝试将本地相应的zip文件删除
-
!!cb config localBackupKeepCount 5本地最多存储多少个备份zip文件,超出此数字时会尝试将最早的删除
-
!!cb config backupSourceDir C:/absolute/path/to/your/world设置自定义备份源目录,需要绝对路径 -
!!cb config multipartChunkSize 10485760设置分片大小为 10MB
- 分片上传支持自定义分片大小(
MultipartChunkSize),可通过指令动态调整,单位为字节。 - 断点文件(如
resume/c228fcea.json)中会记录 upload_id、已上传分片、分片大小、zip 路径等信息,便于多次中断与恢复。
- 上传过程中如遇插件卸载/重载/服务端关闭,断点信息会自动保存在
resume/目录下。 - 重启后会自动提示断点任务,可用
!!cb continue <id>续传,或!!cb abort <id>放弃。 - 支持多次中断与恢复,断点文件会持续更新。
- 默认备份
server/world目录。 - 可通过
!!cb config backupSourceDir <绝对路径>指定任意需要备份的文件夹。 - 适用于多世界、特殊存档或自定义数据目录的备份需求。
- MCDReforged >= 2.1.0
- Python 3.9+
- 阿里云 OSS Python SDK(alibabacloud-oss-v2)
- 作者:caikun233 in GRUnion
- 欢迎issues