夜雨聆风学习资料网

ARTICLE · 1094927

我把十几个AI的钥匙锁进一个压缩包,密码写在一张纸上

我把十几个AI的钥匙锁进一个压缩包,密码写在一张纸上

昨晚十点多,我自己在 Gitee 上开了个空仓库,语音跟 AI 说了一句:仓库建好了,帮我连起来,把这台服务器备份掉。

它接过去就动手。今天上午我把仓库整个拉回来,自己验了一遍,才敢说这件事做成了。整套备份方案里最要紧的一环,最后落在了一张纸上的那串密码里——这一环,机器替不了。

一、先量清楚要备份多大,这步不能跳

它第一件事是量目录。AI 程序加十几个分身的数据,4.7 个 G;公司资料库,证照、合同、招标文件原件,70 个 G;平时的产出和平台代码,15 个 G。

而免费仓库的额度是 1 个 G,单文件上限 100 兆。三个数摆在一起,全量搬上去这条路就断了。

最后定的口径是:只备份“丢了最难重建”的那部分。代码、配置、技能、记忆、脚本,加起来 724 兆。那 70 个 G 的资料库不动,另想办法。

二、十几个AI的钥匙,一把都没进仓库

每个分身有一个 .env 文件,里面是模型 API 密钥、微信 Token 这类东西,全是明文。

做法是先把十几个文件打包,AES-256 加密成一个 2 KB 的包,只有这个包进仓库。密码 24 位随机,大小写字母加数字。

密码不写进任何代码。它单独放在一个 txt 里交到我手上,我打印了一份收进抽屉。机器管加密,钥匙得人拿着。

顺手还清了另一笔账:技能和文档里有 32 个文件,带着 sk- 开头的明文示例密钥,脚本统一换成了脱敏占位符。

三、真正花时间的是四个坑

第一个坑,排除规则没生效。平台代码里有个 data 目录 14 个 G,我写了排除规则,它照样进去了。根因是那目录不在第一层,规则只匹配了最外层。换成 rsync 的 --exclude 参数,一次排干净,14 个 G 变 95 兆。

第二个坑是好事。推送之前它先扫一遍明文密钥,一下拦下来 36 个文件。根因不在新写的代码,是源文件里本来就有,同步过来又带了进去。这次拦住了,没推。

第三个坑最阴:自动脱敏的脚本报成功,我一复查,还有 32 个文件带明文。根因是复制文件时保留了源文件的只读权限,写入静默失败,异常又被吞掉了。修法是写入前先改权限,并且把异常改成打印出来,不许静默。

第四个坑是我自己踩的。加密包生成在临时目录里,我顺手清临时目录,把它一起删了。换到不会被清理的位置,重新生成一份。

四、从云上拉回来,我自己验了一遍

验收不是听它说“完成”。我把仓库重新克隆下来:15265 个文件,全下来了。

再在克隆回来的目录里试解密,17 个 .env 全部恢复,245 行配置一条不少。

定时任务也上了:周日、周二、周四夜里十二点跑一次,增量,一次 8 秒,跑完给我发一条——成功、失败,还是没变化。脚本自带安全检查,哪天冒出一个裸密钥,直接中止告警,不推。

【老梁一句话】加密、搬运、校验都能交给机器;那把钥匙,只能攥在人的手里。

相关学习资料