Rust 每次强制更新之后服务器出事,几乎都不是”技术难”,而是顺序错了。插件全挂、玩家进不来、存档读不了——这三件事对应的其实是同一个流程里的三个动作做反了。
这篇按时间线讲清:更新前一天备什么、当天每个时间点做什么、为什么必须等 Oxide、插件按什么优先级恢复、真出事怎么回滚。看完你手上就有一份能照着执行的清单。
一、先分清四件事,别混成一件
更新日出问题,多半是这几件事被当成了一件。它们的时间节奏完全不同:
| 事情 | 多久一次 | 影响什么 |
|---|---|---|
| 官方月度更新 | 每月第一个周四 | 服务端版本号变了,玩家客户端也跟着变 |
| 强制清档 | 跟着月度更新 | 地图重生成,建筑和物资全没;蓝图只在官方宣布的月份清(约每季度一次) |
| Oxide 适配 | 跟着 Rust 走,通常几小时内 | 适配版没出来之前,所有插件都不能正常工作 |
| 插件 API 变更 | 不定期 | 个别插件编译不过,要等作者更新 |
还有一件常被误解的:「每周四清档」是你自己的节奏,不是官方的。官方只强制每月一次,周清档是社区服自己定的规矩,写在服务器名里给玩家看的。清档删哪些文件是另一套流程,见 Rust 服务器清档完整指南。
二、更新前一天:四份备份,少一份都可能白干
大多数事故不是更新失败,是更新失败之后没有东西可以还原。下面四样东西,更新前都该有一份带日期的副本:
| 备什么 | 在哪 | 丢了会怎样 |
|---|---|---|
| 存档 | server/服务器名/ 下的 .sav .map(含 .sav.1 / .map.1 轮转备份) |
地图和建筑没了,玩家一夜回到开荒 |
| 插件数据 (最容易漏) |
oxide/data/ |
经济余额、签到天数、Kit 领取记录、领地、商店、等级、封禁——全没,等于把服洗了一遍 |
| 插件配置 | oxide/config/ |
倍率、活动开关、商店价格全部回默认,要重配几十个文件 |
| 服务端配置 | server/服务器名/cfg/server.cfg | 端口、RCON 密码、地图种子、最大人数全丢 |
Linux(在服务端根目录执行):
D=$(date +%Y%m%d)
tar czf /root/rust-backup-$D.tar.gz
server/my_server_identity/*.sav
server/my_server_identity/*.map
server/my_server_identity/cfg
oxide/data oxide/config
Windows(PowerShell,在服务端根目录执行):
$d = Get-Date -Format yyyyMMdd Compress-Archive -Path .servermy_server_identity*.sav, .servermy_server_identity*.map, .servermy_server_identitycfg, .oxidedata, .oxideconfig -DestinationPath D:rust-backup-$d.zip
顺手多做两件事,出问题时能省半小时:把 oxide.plugins 的输出截图存下来(更新后拿它对照插件数量),记下当前 oxide.version 的版本号(回滚时知道该装回哪个)。
三、更新当天的时间线
下面按北京时间排,以 12 月 3 日那轮为例(夏令时期间整体早一小时):
| 时间 | 做什么 | 为什么 |
|---|---|---|
| 提前 1 天 | 四份备份 + 截图 + 记版本号 | 真出事时,这是唯一的还原手段 |
| 19:00 UTC (北京 03:00) |
官方推送。这时候先别动服务器 | 服上还有人,先把这一局让他们玩完 |
| 推送后 0–30 分钟 | 控制台 server.save → 关服 |
存档干净落盘,避免更新时写到一半 |
| 关服后立刻 | steamcmd 更新服务端(带 validate) | 不带 validate 可能留下半旧文件,后面全是难定位的版本问题 |
| 更新完 0–2 小时 | 什么都别做,等 Oxide | 这是全文最重要的一行,第四节单独说 |
| Oxide 发布后 | 装 Oxide → 启动 → oxide.version 核对 |
版本对不上,装多少插件都白搭 |
| 启动后 10 分钟 | oxide.plugins 看加载数量 |
数量比截图少,说明有插件没加载 |
| 之后 | 按 P0 → P3 恢复插件 | 一层一层来,才知道是谁的问题 |
| P0 就位 | 先开服,活动插件可以晚点上 | 关着的服留不住人,开着的服哪怕少几个功能 |
四、最关键的一步:等 Oxide,不要抢跑
Rust 更新完,服务端是能启动的,玩家也能进——但这时候一个插件都不会加载。看起来”服开着”,实际签到、商店、传送、领地全部失效。
更麻烦的是数据。插件没加载的时候,玩家照样会去点签到面板、领每日礼包、用商店——这些操作失败的方式并不优雅,有些插件会用旧结构去写 oxide/data,等新版本上来,读到的就是一份半坏的数据。
怎么判断 Oxide 已经适配了?不要看官网首页有没有写 updated,用这三个依据,按可靠程度排:
① 看版本号对应关系。控制台 oxide.version 会同时输出 Oxide 版本和当前 Rust 协议号,拿这个协议号跟 Oxide 发布说明里写的对应版本比,对上了才算适配;
② 看更新日志的日期。Oxide 的发布记录里有具体的适配构建时间,晚于本次 Rust 推送时间才算数;
③ 看社区反馈。Oxide 官方 Discord 与各大插件站的当日讨论,是”已经发了但有问题”还是”还没发”,这里最真实。
如果超过 24 小时还没适配,你只有两个选择:延后开服(玩家客户端已经更新,等于服关着,提前公告),或者临时以原版跑(不装 Oxide,玩家能玩,但没有任何插件功能)。第二个选项对模组服等于停服,所以实际上还是第一个。
五、更新命令,和两个常见的坑
Linux:
steamcmd +login anonymous +force_install_dir /home/rust/server +app_update 258550 validate +quit
Windows:
steamcmd +login anonymous +force_install_dir D:rustserver +app_update 258550 validate +quit
258550 是 Rust 服务端的应用号,validate 让 Steam 校验并补齐缺失或损坏的文件。这两个参数都别省——省掉 force_install_dir 会装到 steamcmd 自己的目录里,省掉 validate 会留下新旧混杂的文件。
坑一:没关服就更新。Windows 上文件被进程占用,更新会失败或只更新一半;Linux 上虽然能覆盖,但运行中的进程读的还是旧文件,重启后才会暴露问题。
坑二:更新到一半断网。表现是服务端能启动但版本号不对,或者某几个文件是旧的。遇到直接重跑一次带 validate 的命令,别靠猜。
六、恢复插件的顺序:先保命,再好用,最后好玩
一次把所有插件全开,是最常见的第二次事故。正确做法是分层恢复,每层确认没问题再进下一层:
| 层级 | 包含什么 | 没好会怎样 |
|---|---|---|
| P0 保命 | Oxide 本体、权限与组(Permissions)、Kits 底座、白名单/反作弊、自动备份 | 没有权限体系,后面所有插件都没法用 |
| P1 能正常玩 | 经济底座(Economics)、传送、家门、领地 | 玩家进来发现”这服坏了一半”,直接退 |
| P2 好玩 | 事件类、商店、皮肤、HUD、排行榜 | 少了会有人问,但不影响开服 |
| P3 可有可无 | 装饰、彩蛋、播放器、整蛊类 | 完全不影响,可以留到最后再处理 |
恢复方法就三步:
oxide.plugins # 看现在到底加载了什么 oxide.reload * # 全部重载一遍,谁挂了一眼看出来 oxide.reload Shop # 单独处理某一个,重载单个比全局重载安全
控制台里的三种结果,含义完全不同:
① Loaded plugin Shop v2.6.8 by … —— 成功,正常;
② Compiler errors / error CS… —— 插件不兼容当前 API,去找作者的新版本,别去改源码;
③ 完全没有任何输出 —— 文件根本没被读到:检查是不是叫 .cs.txt、是不是放在 oxide/plugins/、是不是把 zip 原样扔进去了。
七、只有更新日才会出现的四类故障
1. 玩家能连上,一进就掉 / 一直”正在连接”
服务端没更到最新,客户端已经更了,协议对不上。顺序永远是先更服务端,再让玩家更客户端。反过来做,玩家会以为是你服的问题。
2. oxide.version 正常,但 oxide.plugins 是空的
覆盖安装 Oxide 时路径错了——解压到了子目录里,变成了 oxide/oxide/plugins。确认 plugins 目录里真的有 .cs 文件,路径必须是 服务端根目录/oxide/plugins。
3. 所有插件一起报编译错误
Oxide 版本对了,但插件用的是旧 API(Rust 这版改了方法签名)。这是插件作者要跟的事,不是你能修的。处理方式:临时停用报错插件,去插件页看有没有更新版,别去改 .cs 源码——下次更新又会挂。
4. 服务端启动即崩,或存档读不了
存档被新版本写过,旧版读不回来。这种情况只能靠第二节的备份,见下一节。
八、回滚:唯一有效的回滚是备份
先说清楚一件事:SteamCMD 没有”退回上个版本”的开关,它只会把服务端更到最新。社区里所谓降级,都是拿备份文件覆盖回去。
所以回滚只有一条路径:停服 → 删掉新版写过的存档 → 把备份的存档和配置放回去 → 装回上一个能用的 Oxide 与插件版本。
现在回头看第二节就明白了:那四份备份不是”以防万一”,它们就是你唯一的回滚功能。备份做在更新前一天,是这件事里唯一不能省的一步。
九、开服之后 24 小时,必查五件事
① oxide.version 与 oxide.plugins 的数量,跟更新前的截图对得上吗;
② fps 跟更新前比有没有掉,掉一半以上先查报错插件,别先怀疑机器;
③ 随便点开一个老玩家的余额和签到天数——数字对得上,说明 oxide/data 没丢;
④ 控制台有没有”每几秒刷一次”的重复报错,这种报错是隐形的 CPU 杀手,比一次性的崩溃更耗性能;
⑤ 让玩家实际做三个动作:建造、交易、传送。三个都通了,才算真的开服。
排查思路和更多现象对照,见 Rust 开服报错排查大全;性能和实体相关的调优,见 卡顿掉帧排查与性能优化。
十、要延期时,公告怎么写
更新日出问题,最伤人的不是晚开两小时,是”不知道要等多久”。公告只讲三段就够:
【更新时间】12 月 3 日(周四)23:00 起维护 【预计时长】4 小时左右,最晚 12 月 4 日 06:00 前开服 【为什么这么久】Rust 官方更新后,插件框架要等官方适配。 这段时间插件处于失效状态,提前开服会导致签到、 商店、传送全部不工作,所以宁可等。 【给你的建议】维护前把要留的东西收进箱子,服务器每天自动备份。
要点只有一个:给一个”最晚”时间,别只说”尽快”。玩家能接受延迟,不能接受不确定。真延期了就再发一条,把新的最晚时间写上。
附:一页纸清单
把上面全部压成一张表,更新日直接照着打勾:
| 时机 | 动作 |
|---|---|
| 更新前 1 天 | □ 备份 .sav / .map □ 备份 oxide/data □ 备份 oxide/config □ 备份 server.cfg □ 截图 oxide.plugins □ 记录 oxide.version □ 备份拷出机器 □ 发更新公告 |
| 更新当天 | □ server.save □ 关服 □ steamcmd 更新(带 validate) |
| 更新后 | □ 等 Oxide,别抢跑 □ 装 Oxide □ 核对 oxide.version □ 核对 oxide.plugins 数量 |
| 恢复插件 | □ P0 权限/备份 □ P1 经济/传送 □ P2 活动/商店 □ P3 装饰 |
| 开服后 24 小时 | □ 查 fps □ 查玩家余额是否还在 □ 查重复报错 □ 建造/交易/传送各试一次 |
相关阅读:Rust 服务器清档完整指南 · Oxide 插件安装与管理 · Rust 服务器从零搭建 · 全部攻略














