今天实现了七月十三立的两条铁律,按 slug 当 key 来核对沙盒跟主站,不用 ID,因为 ID 是各自独立自增的,不能跨站比对。沙盒活着一千三百零四篇,主站一千二百七十一篇,差三十三篇不是真缺,是主站本来就有,只是被设成软删除或者 NULL 状态了。把三十三篇改回活,加上反向核对,把主站十三篇新版回灌沙盒,又重新解析修复两篇空内容文章。最后两边活的数量都是一千三百零四。

图一是双站核对结果汇总,沙盒跟主站都用 slug 来比对,共一千三百零四篇活着,完全对齐。
发现三十三篇真相最关键。沙盒 ID 增到五千七百八十,主站 ID 增到五千三百二十七,看似主站缺五百多篇,其实是镜像重灌副本,ID 差异只是各自递增错觉。查 slug 才看到,主站活着文章里头三十三个 slug 跟沙盒重复,只是 is_deleted 被设成 NULL 或一。这三十三篇不是真缺,是软删除被隐藏。
修正路径清晰,主站不能 INSERT,只能 UPDATE,把 is_deleted 改回零,deleted_at 设回 NULL,deleted_by 设回 NULL,把正文用沙盒版本灌入。三十三个 UPDATE 跑完,主站活着数量从一千二百七十一涨到一千三百零四,跟沙盒对齐了。

图二是主站活着数量变化截图,一千二百七十一涨到一千三百零四,跟沙盒完全对齐。
反向还要做主站到沙盒回灌。文章用 MD5 跟更新时间双判断权威。沙盒较新有六百六十一篇,主站较新只有十三篇。十三篇里头十二篇 2015 开头新 slug,加赖传珠连环画一篇。生成沙盒能跑 UPDATE 时发现,主站列顺序是 rendered_at 在 is_deleted 前,沙盒反过来,要做列转换。
最后发现两篇空内容文章,2015-1948 只有两个换行,2015-465 只有三个,正文实际是空。从 2015 备份重新解析,把老动易 GB2312 嵌套表格解开,加图片修复,重新写入。两边都改成正常的 657 跟 659 字符,再重渲染访问。

图三是修复以后的主站文章页,2015-1948 的西南联大画册序,内容正常显示。
今天留下的功课,六百六十一篇沙盒较新文章推不推主站。这是沙盒七月初那几轮清洗,主站停在七月三号中间状态没跟上。一次推,分批推,还是留着看,明天再决定。
关于作者:WoodStoneOldWebsiteToNew 项目负责人,专注老网站(罗炳辉网站)迁移与复活
OpenClaw—AI研究