10 10 月 2026
开服最痛的不是装不上,而是玩了两百小时的档,一次误操作全没了。这篇给出可落地的自动备份方案。

先说三条铁律:

  1. 更新前必备份 —— 游戏补丁是存档损坏的头号原因
  2. 备份要在停服状态做 —— 运行中拷贝可能拷到半截写入的文件
  3. 备份要放别处 —— 和服务端放同一块盘,硬盘挂了就一起没了

一、存档在哪?主流游戏路径速查

Linux 常见位置:

游戏存档路径(相对服务端目录)
幻兽帕鲁PalServer/Pal/Saved/SaveGames/0/
英灵神殿~/.config/unity3d/IronGate/Valheim/worlds/
七日杀~/.local/share/7DaysToDie/Saves/
我的世界./world/(服务端目录下)
泰拉瑞亚~/.local/share/Terraria/Worlds/
饥荒联机~/.klei/DoNotStarveTogether/你的集群名/
RUSTserver/你的身份/server/你的服名/
方舟ShooterGame/Saved/SavedArks/
CS2配置在 game/csgo/cfg/,无世界存档
僵尸毁灭工程~/Zomboid/Saves/
雾锁王国./savegame/

Windows 常见位置:

游戏存档路径
幻兽帕鲁PalServer\Pal\Saved\SaveGames\0\
森林之子%USERPROFILE%\AppData\LocalLow\Endnight\SonsOfTheForest\Saves\
SCUMSCUMServer\SCUM\Saved\SaveFiles\
流放者柯南ConanSandbox\Saved\
雾锁王国.\savegame\
V Rising.\save-data\
找不到的通用办法:搜索最近修改时间跟你玩的时间吻合的文件夹。

二、手动备份(一次也得会)

Linux:

# 停服
sudo systemctl stop game

# 打包(带日期时间戳)
tar -czf /home/steam/backup/palworld_$(date +%Y%m%d_%H%M).tar.gz \
  /home/steam/palworld/PalServer/Pal/Saved/SaveGames/

# 启服
sudo systemctl start game

Windows(PowerShell):

# 停服后打包
$date = Get-Date -Format "yyyyMMdd_HHmm"
Compress-Archive -Path "C:\PalServer\Pal\Saved\SaveGames\*" `
  -DestinationPath "D:\backup\palworld_$date.zip"

Windows(批处理,可放进启动脚本前):

@echo off
set d=%date:~0,4%%date:~5,2%%date:~8,2%_%time:~0,2%%time:~3,2%
set d=%d: =0%
powershell Compress-Archive -Path "C:\PalServer\Pal\Saved\SaveGames\*" -DestinationPath "D:\backup\pal_%d%.zip"

三、自动备份:写脚本 + 定时任务

Linux 方案(cron)

创建 /home/steam/backup.sh:

#!/bin/bash
# ===== 配置区 =====
SERVICE_NAME="game"
SAVE_DIR="/home/steam/palworld/PalServer/Pal/Saved/SaveGames"
BACKUP_DIR="/home/steam/backup"
KEEP_DAYS=7
# ==================

mkdir -p "$BACKUP_DIR"
FILENAME="save_$(date +%Y%m%d_%H%M).tar.gz"

echo "[$(date)] 开始备份..."

# 通知玩家(可选,需开启 RCON)
# rcon-cli say "服务器将在30秒后重启备份存档"

systemctl stop "$SERVICE_NAME"
sleep 5

tar -czf "$BACKUP_DIR/$FILENAME" "$SAVE_DIR"

systemctl start "$SERVICE_NAME"

# 删除过期备份
find "$BACKUP_DIR" -name "save_*.tar.gz" -mtime +$KEEP_DAYS -delete

echo "[$(date)] 备份完成: $FILENAME ($(du -h $BACKUP_DIR/$FILENAME | cut -f1))"

赋予执行权限并加定时任务:

chmod +x /home/steam/backup.sh
crontab -e

加入(每天凌晨 4 点备份):

0 4 * * * /home/steam/backup.sh >> /home/steam/backup.log 2>&1

Windows 方案(任务计划程序)

  1. 打开「任务计划程序」→ 创建基本任务
  2. 触发器:每天 04:00
  3. 操作:启动程序 → 选择你的 backup.bat
  4. 勾选「使用最高权限运行」

backup.bat 内容参考第二节。


四、自动更新:让服务端自己打补丁

Linux:更新脚本 + cron

/home/steam/update.sh:

#!/bin/bash
SERVICE_NAME="game"
APP_ID="2394010"
SERVER_DIR="/home/steam/palworld"

systemctl stop "$SERVICE_NAME"
sleep 3

# 先备份再更新(重要!)
/home/steam/backup.sh

/home/steam/steamcmd/steamcmd.sh \
  +force_install_dir "$SERVER_DIR" \
  +login anonymous \
  +app_update "$APP_ID" \
  +quit

systemctl start "$SERVICE_NAME"
echo "[$(date)] 更新完成" >> /home/steam/update.log
chmod +x /home/steam/update.sh
crontab -e
# 每周一凌晨 5 点更新
0 5 * * 1 /home/steam/update.sh

Windows:任务计划 + 批处理

update.bat:

@echo off
taskkill /F /IM PalServer-Win64-Shipping-Cmd.exe
timeout /t 10

C:\steamcmd\steamcmd.exe +force_install_dir C:\PalServer +login anonymous +app_update 2394010 +quit

cd /d C:\PalServer
start "" PalServer.exe

再用任务计划程序挂上。


五、定期重启:解决内存泄漏的土办法

很多游戏服务端长时间运行会缓慢吃内存(帕鲁尤其明显)。定期重启是社区公认的有效缓解手段。

# 每天凌晨 4:30 重启(cron)
30 4 * * * systemctl restart game

Windows:任务计划程序里创建两个触发器,一个停一个启,或者用计划任务跑 restart.bat。

重启前记得:先在游戏里广播提示,或者通过 RCON 发消息,别把正在玩的朋友踢了。

六、备份传到别处(异地容灾)

本机备份只能防误删,防不了硬盘损坏和系统崩溃。至少要做到异机备份。

方案 A:rsync 同步到另一台机器

rsync -avz -e "ssh -p 22" /home/steam/backup/ user@另一台机器IP:/backup/

方案 B:传到对象存储(推荐,成本极低)

# 以 s3cmd 为例,各家对象存储基本兼容
s3cmd put /home/steam/backup/*.tar.gz s3://你的桶名/game-backup/

方案 C:打包下载到本地

# 本地电脑上执行(Linux/Mac)
scp -P 22 user@服务器IP:/home/steam/backup/save_20250101_0400.tar.gz ./

Windows 用 WinSCP 或 FileZilla 拖拽下载即可。


七、存档迁移:换服务器/换机器

迁移步骤:

  1. 两边游戏版本必须一致(不一致会存档不兼容)
  2. 老机器停服,打包整个存档目录
  3. 传到新机器的对应路径
  4. 先启动一次确认能读档,再改配置
  5. 更新 NAT 映射规则指向新机器
# 老机器打包
tar -czf save.tar.gz /home/steam/palworld/Pal/Saved/SaveGames/

# 传到新机器
scp save.tar.gz user@新机器IP:/home/steam/

# 新机器解压到对应位置(先停服)
systemctl stop game
tar -xzf /home/steam/save.tar.gz -C /home/steam/palworld/Pal/Saved/
chown -R steam:steam /home/steam/palworld
systemctl start game

八、日志清理:别让日志撑爆磁盘

游戏服务端日志增长很快,几个月就能吃掉几十 G。

# 用 logrotate 自动轮转
sudo nano /etc/logrotate.d/gameserver

内容:

/home/steam/server/logs/*.log {
    daily
    rotate 7
    compress
    delaycompress
    missingok
    notifempty
    copytruncate
}

手动应急清理:

# 删除 7 天前的日志
find /home/steam/server/logs -name "*.log" -mtime +7 -delete

九、维护清单(建议每月过一遍)

  • [ ] 确认自动备份在正常运行(检查备份目录有没有新文件)
  • [ ] 确认自动更新正常(看更新日志)
  • [ ] 清理过期备份和日志
  • [ ] 检查磁盘剩余空间
  • [ ] 检查内存占用趋势(是否异常增长)
  • [ ] 验证一次备份能否正常恢复(最容易被忽略但最关键)

📌 备份这事,做过一次和没做过,心态完全不一样。
我们家的云服务器提供快照功能,一键整机备份,比手动打包省心,配合 NAT 型的低价,长期挂服更划算 → 财富云计算 https://z0w.cn
延伸阅读
  1. 网站环境怎么选:LNMP 手动 / 宝塔面板 / Docker / 云开发
  2. 问卷表单系统搭建:SurveyKing / Formbricks,数据自己收
  3. 图床搭建:Lsky Pro / Lychee,自托管图片托管方案
  4. 邮件列表搭建:listmonk 自托管 Newsletter,把读者握在自己手里
  5. 文档站点搭建:MkDocs / VuePress / Docsify,产品文档与技术手册方案
  6. RSS 阅读器搭建:FreshRSS 自托管,把信息流拿回自己手里
  7. 短链接服务搭建:Shlink 自托管,链接数据自己掌握
  8. 网站状态监控页搭建:Uptime Kuma,服务器挂了第一时间知道
更多阅读
  1. 上一篇:游戏服务器配置怎么选:CPU、内存、带宽、硬盘的选型公式
  2. 下一篇:游戏服务器卡顿、掉线、连不上:从现象到根因的排查手册
发表评论 7

取消回复