# Minecraft Fabric 服务器自动备份方案(Linux + screen)

适用环境:

- Linux 服务器
- Minecraft Fabric 服务端
- 使用 `screen` 运行服务器
- 定时自动备份
- 保留最近 3 天存档
- 服务器运行时安全备份(热备份)

---

# 一、服务器目录结构(推荐)

mc-server
├── backup.sh
├── backups
├── world
├── mods
├── config
├── logs
├── fabric-server-mc.1.21.1-loader.jar


创建备份目录:

```bash
mkdir ~/mc-server/backups

二、确认 screen 会话名称

服务器通常通过 screen 运行,例如:

screen -ls

可能显示:

xxx.mc (Detached)

这里 mc 就是 screen 会话名。

脚本中需要填写:

SCREEN_NAME="mc"

如果显示的是 minecraft 或其他名字,需要对应修改。


三、创建备份脚本

创建脚本:

nano ~/mc-server/backup.sh

写入以下内容:

#!/bin/bash

# ==========================
# Minecraft Server Backup
# ==========================

SERVER_DIR="/home/ephanye/mc-server"
BACKUP_DIR="$SERVER_DIR/backups"
SCREEN_NAME="mc"
RETENTION_DAYS=3

DATE=$(date +"%Y-%m-%d_%H-%M")
BACKUP_FILE="$BACKUP_DIR/mc_backup_$DATE.tar.gz"

echo "========== Minecraft Backup =========="
echo "Start Time: $(date)"

cd $SERVER_DIR

# 通知服务器
screen -S $SCREEN_NAME -X stuff "say §a[Server] Starting backup...$(printf '\r')"

# 强制保存
screen -S $SCREEN_NAME -X stuff "save-all$(printf '\r')"
sleep 10

# 关闭自动保存
screen -S $SCREEN_NAME -X stuff "save-off$(printf '\r')"
sleep 5

mkdir -p $BACKUP_DIR

# 压缩备份(降低IO优先级)
ionice -c2 -n7 tar -czf $BACKUP_FILE \
world \
mods \
config \
server.properties \
ops.json \
whitelist.json \
banned-ips.json \
banned-players.json \
usercache.json

echo "Backup created: $BACKUP_FILE"

# 恢复自动保存
screen -S $SCREEN_NAME -X stuff "save-on$(printf '\r')"

# 通知完成
screen -S $SCREEN_NAME -X stuff "say §a[Server] Backup finished!$(printf '\r')"

# 删除旧备份
find $BACKUP_DIR -type f -mtime +$RETENTION_DAYS -name "*.tar.gz" -delete

echo "Backup completed: $(date)"
echo "======================================"

四、赋予脚本执行权限

chmod +x ~/mc-server/backup.sh

五、手动测试备份

建议先手动运行一次:

cd ~/mc-server
./backup.sh

如果成功:

服务器聊天会显示:

[Server] Starting backup...
[Server] Backup finished!

并且目录中出现:

backups/mc_backup_2026-03-10_04-00.tar.gz

六、设置定时自动备份

编辑 cron 任务:

crontab -e

添加:

0 4 * * * /home/ephanye/mc-server/backup.sh >> /home/ephanye/mc-server/backups/backup.log 2>&1

含义:

每天凌晨 04:00 自动备份
并记录日志

七、备份文件结构

backups
├── mc_backup_2026-03-10_04-00.tar.gz
├── mc_backup_2026-03-11_04-00.tar.gz
├── mc_backup_2026-03-12_04-00.tar.gz
└── backup.log

系统会自动:

  • 保留最近 3 天

  • 自动删除更早备份


八、恢复服务器存档

恢复步骤:

  1. 停止服务器

  2. 解压备份

tar -xzf mc_backup_2026-03-10_04-00.tar.gz
  1. 覆盖服务器目录

  2. 启动服务器


九、手动备份快捷命令(推荐)

可以添加一个 alias:

nano ~/.bashrc

加入:

alias mcbackup="cd ~/mc-server && ./backup.sh"

刷新配置:

source ~/.bashrc

以后只需输入:

mcbackup

即可立即备份。


十、方案特点

优点:

  • 支持 服务器运行时备份

  • 防止 存档损坏

  • 自动 压缩

  • 自动 删除旧备份

  • 自动 服务器通知

  • IO 优先级降低,不影响游戏

适合:

  • 小型私人服务器

  • Fabric / Forge 服务器

  • Linux VPS / 家用服务器