dsh/go_blog:chore/legacy-avatar-migration-script
main
头像上传已走统一上传引擎(files 表 + SHA-256 内容寻址,PR #8)。其他部署在升级前创建的历史头像仍以 <uid>.jpg 命名、且未在 files 表登记——只有所有者下次换头像时才会被新代码清理。
<uid>.jpg
新增 scripts/migrate_legacy_avatars.sh(一次性、幂等):
scripts/migrate_legacy_avatars.sh
^[0-9a-f]{64}$
avatars/<哈希>
type='avatars'
users.avatar
已在本机生产库实测(kevin/dsh 均为哈希命名,2 个用户全部跳过,exit 0),迁移不会重复执行。
其他部署升级到统一上传引擎后,历史头像仍以 <uid>.jpg 命名且未在 files 表 登记,直到所有者下次换头像才被清理。本脚本提供一次性迁移: 内容字节不变,以 SHA-256 哈希命名复制到 avatars/,登记 files 行 (type=avatars),更新 users.avatar,删除旧文件。 幂等:已为 64 位哈希名的用户自动跳过;无遗留文件时无操作。 已在线上库实测(2 个用户全部跳过)。
No dependencies set.
The note is not visible to the blocked user.
背景
头像上传已走统一上传引擎(files 表 + SHA-256 内容寻址,PR #8)。其他部署在升级前创建的历史头像仍以
<uid>.jpg命名、且未在 files 表登记——只有所有者下次换头像时才会被新代码清理。内容
新增
scripts/migrate_legacy_avatars.sh(一次性、幂等):^[0-9a-f]{64}$自动跳过);avatars/<哈希>(内容寻址磁盘去重)并登记 files 行(type='avatars',WHERE NOT EXISTS 幂等);users.avatar为哈希;<uid>.jpg。已在本机生产库实测(kevin/dsh 均为哈希命名,2 个用户全部跳过,exit 0),迁移不会重复执行。