ARCHIVELIST · 368 POSTS AAPL$---- GOOGL$---- NET$---- CLOCK UTC --:--:--
北京 --:--:--
POSTS368 CATEGORIES3 TAGS49 PAGES7
LAST UPDATE2026-09-06
设计 生活 技术 紫砂 48 人生感悟 45 随笔 31 社会观察 25 设计 17 数码 14 软件工具 14 道教 14 中医 13 佛学 13 美食 13 建站 12 职业 12 职场 12 书画 11 人际 11 民俗 11 科普 11 旅行 10 自然 10 养生 8 国学 8 影视 8 怀旧 8 诗词 8
tech 2026-09-06 · 931 字 · POSTS

把网站搬上 GitHub + Cloudflare 的一天:正文差点全丢

发布 2026-09-06 04:00 修改 2026-09-06 字数 931 阅读 约 3 分钟 建站软件工具随笔

写这篇之前先交代一句:网站迁移这件事,干货全藏在差点把数据搞没的那几次折腾里,不在最后上线那一下。

事情的起点是一个批量脚本。我想给全站文章重建一套统一的标签体系,三百多篇 markdown 要过一遍机器。动手前我做了个习惯性动作:把整个 content 目录在项目外备份了一份。就是这个备份,几个小时后救了全站。

打标脚本跑完,我没多想就开始收拾新分类结构。直到打开一篇文章,发现正文没了,只剩标题日期那几行元数据。再翻,全站都是这样。三百多篇的文字和图片引用,一夜之间全部蒸发。

第一个念头是完蛋。冷静下来才想起动手前那份备份。恢复方案很直接:正文整体从备份拿回来,标签用新体系,两边一拼,全站复原。1274 处图片引用零丢失。整个过程十分钟不到,冷汗还没干透。

那天剩下的时间顺理成章:清理掉两篇历史遗留的空文件,文章数落在三百六十七;把分类 URL 从带中文的长链接改成干净短链接,老链接做 301 跳转,收藏夹里那些旧地址不至于失效;接入 Google AdSense,代码原样塞进全站共用的模板,一改全站生效。

迁移才是真战场

网站之前没有任何版本控制,这本身就是隐患。我先做了第一次完整快照,把三百多篇文章、模板、一千二百多张图片整体归档,然后才敢动 git。

真正磨人的是上传。图片总量五百多兆,常规 git 推送反复失败,换了好几个姿势才定位到是网络环境对大包连接的天然不友好。最后的解法是 git-lfs:一千二百多张图转成指针进 git,大文件走它自己的通道逐文件传,几分钟就推完了。顺带还处理了 Windows 证书校验的怪癖,以及一次清理操作把本地 git 对象误删的乌龙,好在远端完整,拉回来就好。

站点最后落在 Cloudflare Pages,主域名切换过去,线上验证:文章数对得上,新分类 URL 全部生效,AdSense 正常。中途还有一段小插曲,域名激活后短暂报错,排查半天发现是平台状态到边缘路由的传播延迟,几十秒后自行恢复,虚惊一场。

收尾往站点根目录放了 ads.txt、favicon 和 logo,全站 favicon 挂上,标签栏终于有了自己的图标。

如果只留一条经验,是这句:批量改数据之前,先备份到项目目录之外,每跑完一步校验文件完整性再走下一步。 那天要不是那个备份,这三百多篇就真没了。