今天(7-03)完成主站与沙盒 articles 表的严格双向对齐,两站文章数都达到了 3255 篇的一致状态,沙盒领先的二十八篇 2015 备份灌入文章同步到了主站,主站领先的三十五篇手工灌入文章反向灌入了沙盒,跨库去重之后确保了 slug 和 source_html_path 唯一对应,同时把沙盒跑过的 clean_v3 清洗规则在主站重跑了一遍,清掉了一万七千五百六十六处内联样式残留,删掉了二百零三张外部链接图片,让主站的 body_html 跟沙盒一样干净。

图1是沙盒 5145 罗炳辉将军在淮南抗日民主根据地一文在手机端的展示,整篇一百六十三段共两万七千多字符,文章末尾干净没有版权和导航残留,渠道归属纪念研究,老动易的整段模板已全部清除,页面只有目录导航加文章正文加返回链接三个区块。
改动本身是把两个站的 articles 表按 source_html_path 字段做主键匹配,沙盒领先的部分用 INSERT INTO 灌入主站,主站领先的部分反向灌入沙盒,过程中用 scp 加 tar 批量把沙盒的 render HTML 产物和 _external 外网图片目录同步到主站,主站服务收到重启指令后立即生效,没有产生可见的停机时间,所有 SQL 操作都走事务,失败可以整批回滚,外部图片的清理规则跟沙盒保持一致,老动易内联样式和外部链接图片全部剥掉,新加的五十三个 article 字段完整保留了渠道归属、来源路径、原始 URL 和发布日期。

图2是主站 www.lbh.red 首页在手机端的展示,整体布局与沙盒 lbh.cba58.cn 完全一致,红色革命主题的顶栏加六大主栏目导航加搜索框加文章列表的版式没有变化,两站视觉风格统一,用户体验上不会感觉到任何差异,文章列表项的展示规则在两站都按照相同的 2015 备份模板走,刷新后看到的就是同一个站点。
同时把”主站与沙盒文章数要严格相等”和”主站任何改动必须入 GitHub 详细记录”这两条作为长期铁律记到项目记录里,以后每次沙盒跑完清洗和同步操作后必须立即推到 GitHub 私有仓库,dev-log 文档按照 12 章结构完整记录为什么做、做了什么、动了哪些文件、改动的具体值是多少、验证结果如何、回滚如何做,临时 SQL 文件全部归档到沙盒 scripts 目录下,跨库 sync 工具做成可复用脚本,下次再有需要双向同步的时候直接调用即可不用从零开始写,本次所有改动详情已完整记录入 dev-log 文档并推送到 GitHub 仓库,跨站代码已全部归档可追溯。

图3是主站 5153 鹿桥《未央歌》讲述西南联大经典故事一文在手机端的展示,整篇文章五千六百二十段共四十九万字符,是这次同步的最长样本,分段算法正确地把 2015 老 ASP 备份里的硬回车识别为 Word 段首缩进而非字内换行,最终呈现给读者的是合理分段的连续中文文本,不是把每个硬回车都当成段落起点的乱拆排版。
关于作者:WoodStoneOldWebsiteToNew 项目负责人,专注老网站(罗炳辉网站)迁移与复活
OpenClaw—AI研究