旧作补记
原始时间:约 2026 年 9 月,具体日期不详
本站补录:2026-10-12。
换工作电脑时,文件复制成功,只能说明文件到了目标目录。真正的验收要回到平常的操作:项目能否打开并构建、SSH 能否从实际使用的客户端连接、历史资料与新增资料是否都在。
先分清需要搬什么
把材料分成程序、配置、用户数据、附件、缓存和凭据。不同类别有不同的恢复方式。程序可以重新安装;配置要适配路径;用户数据要防止覆盖新内容;缓存通常可以重建;机器绑定的凭据可能必须通过应用支持的方式迁移或重新登录。
只按“安装过的软件”列清单容易遗漏便携程序、托盘工具、快捷键和启动项。它们体积很小,却可能直接影响每天的使用习惯。
修路径之前,确认应用实际读哪里
用户目录、盘符和启动身份变化后,应用可能仍读旧位置,也可能在退出时把内存中的配置重新写回。检查日志、实际修改时间和应用界面,再判断哪个路径生效。不要仅凭一个环境变量就批量替换全部路径。
SSH 的配置文件可能保留旧的 IdentityFile、Include 或代理程序路径。修复时保留现有密钥和主机身份校验,分别验证命令行入口与 IDE 入口。某个终端能连接,不能证明 IDE 也已加载新配置。
对正在变化的数据,先取得一致副本
聊天记录、会话索引或其他 SQLite 数据可能包含尚未合入主文件的更新。应使用应用支持的导出、冷备份或 SQLite 的受支持备份机制,不能只复制一个正在被写入的数据库文件就宣布完成。SQLite Backup API 文档
新电脑已经产生新记录时,要先保留它们,再在副本上比较和合并。文件完整性、旧记录覆盖、当前新记录、附件可打开,是不同的验收项。
开发环境按项目原来的版本恢复
先确认项目 Wrapper、SDK 和缓存目录。迁移路径与升级构建工具应分开处理,否则新增的不兼容会掩盖原来的路径问题。版本命令成功、配置加载成功、编译成功、IDE 同步成功,也应分别记录。
一份能复查的验收单
| 项目 | 文件层面 | 实际操作层面 |
|---|---|---|
| IDE | SDK、项目配置与缓存路径 | 同步并编译代表项目 |
| SSH | 配置引用与权限 | 从平时的入口认证 |
| 历史数据 | 一致副本、记录范围 | 打开代表性旧记录与新记录 |
| 小工具 | 程序目录与启动项 | 快捷键、托盘和自动启动 |
本次笔记的经验是:按实际工作流验收,比按复制进度验收更有效。清理旧备份要放在验收之后;无法证明重复的唯一资料继续保留。
可复用的迁移 skill
把恢复步骤、常见误判和验收标准整理成一份 skill,换机时可以按同一套要求逐项处理。内容包括主文件 SKILL.md 和配套的 references/pitfalls.md,两份文件需要保留原有目录关系。
下载完整 skill 包 · 查看 SKILL.md · 查看专项处理要点
下面附上完整内容。使用时应先确认本次机器、路径与操作范围,不能把旧案例中的环境信息直接套到新机器。
SKILL.md
name: windows-profile-migration
description: 恢复或验收Windows换机迁移,处理盘符映射、用户配置、开发工具链、聊天数据库与附件、机器绑定凭据,以及迁移后的有证据冗余清理。
Windows用户环境迁移
适用于旧机到新机或不同用户配置之间的恢复。保持用户指定的软件、版本、路径、延后/取消范围;使用前获取本次机器实际信息,不沿用参考案例的盘号、用户名和目录。
开始前确认的事实
- 哪台机器在运行,源备份和目标卷是谁;确认卷标、容量、硬件身份,不能只看盘符。
- 用户已验收、正在使用、取消、暂缓及明确禁止操作的应用。用户自行修好的应用不再纳入自动修复。
- 区分配置、用户数据、附件、缓存、凭据存储;盘符映射必须覆盖项目内配置、快捷方式、启动项和虚拟机列表。
- 旧机尚可用时,优先核实官方跨机导出、机器密钥、凭据管理器和恢复验证,之后才能建议退役旧机。
- SSH不能只复制密钥:核对实际客户端及HOME、config中的旧用户/盘符引用和有效Host匹配,再在授权范围内用禁止密码交互且保留主机身份校验的方式验证认证。命令行成功与IDE拉取成功分开记录。
- 不只盘点安装程序:同时检查便携工具、托盘/任务栏组件、登录启动项、全局快捷键、hosts和环境变量;发现候选后结合用户范围筛选,不盲目恢复所有启动项。
优先级与带宽
建立单一安装恢复队列,记录用户优先级、已有安装包、下载体积、前置依赖、需交互环节、暂缓/取消状态。先恢复关键工作能力,低优先级大下载不应占满关键任务带宽。受登录、缺盘阻塞的单项不阻塞其他可执行项。用户说“继续”时重新处理暂缓范围,不能遗忘之前的工作。
低带宽是持续约束:以实测速率估时,间隔采样文件字节数并结合进程/错误日志判断。下载未结束不等于卡死;有持续增长就保留下载,只有明确异常证据才重试。用户提供安装包后核验本地包并防止重复任务。
恢复与验收
- 读取应用日志、进程信息和实际写入文件确定生效目录。MSIX、注册表/文件虚拟化可能让工具子进程与桌面启动看到不同目录;不要仅根据APPDATA推断。
- 恢复前备份目标当前数据。应用会在退出时写回配置时,等待用户退出或用应用支持的快照机制,避免与用户新修改竞争。
- SQLite使用受支持的备份或冷备份,关联WAL/SHM一起考虑。新旧数据共存时,在副本中按主键与schema合并,新记录冲突策略应明确。原库损坏时先定位可读范围,保留原件和失败证据。
- 跨盘复制禁止默认镜像删除。去重备份必须用映射重建原目录。对已存在目标先比较内容;不同内容保留双方,不能仅凭时间戳或文件大小覆盖。
- 配置文件已写入、应用已加载、代表功能验证、用户验收是不同状态。只报告已获得的证据,不把quick_check、文件数量或服务存在当作完整功能恢复。
- 按用户工作流做分项验收:IDE全局配置与项目同步;会话工具的原始会话、索引、项目注册和归属;浏览器的个人资料、密码、扩展、书签和旧标签页;聊天工具的消息、新增数据与附件;小工具的快捷键、显示和启动项。第一次失败后梳理相关层面的证据缺口,不只修复当前症状。
- hosts恢复先备份新机文件,比较有效条目并检查冲突后合并,再验证名称解析;系统代理和环境变量亦应比较后更新,避免整体覆盖新机设置。
遇到凭据、聊天数据、开发工具链或运行身份问题时,读取专项处理要点。
下载、安装及开发工具链
- 从官方来源确认安装方式、兼容性、版本和签名;不同安装器的静默参数和路径引用规则不能套用。
- 低网速下依据文件增长和进程判断进度,不因等待久而重启或重复下载。用户提供安装包后优先验证该包。
- Gradle Wrapper、项目指定版本和原可用组合优先于IDE默认最新版;分清Gradle安装目录、用户缓存目录、Gradle JVM和项目语言级别。
- 先做版本/离线配置加载检查,依赖解析或编译单独记录。不运行发布、生产服务或用户数据变更来验证迁移。
收尾清理
用户授权清理且验收完成后:
- 建立具体文件清单,标注大小、保留副本、哈希证据和删除理由。先形成计划,再执行。
- 仅清理确认重复的安装包、可再生失败下载、被最终验证产物替代的工作副本等。不能把“旧”或“大”当删除理由。
- 保留唯一原始备份、无法再导出的机器凭据资料、用户新数据,以及用户要求保留的脚本/文档。无法确认重复的备份保留并说明。
- 删除前重新校验文件未变化、解析后的路径在授权工作区内、无链接越界;优先逐文件删除,不拼接跨shell递归删除命令。
- 输出已删文件与实际释放的逻辑字节数,不承诺等同磁盘可用空间变化。清理后更新单一权威验收单,旧进度保留为历史。
技能不授予额外权限;遵守本会话的应用操作、联网、键鼠、重启及外部写入边界。
references/pitfalls.md
专项处理要点
SSH文件已恢复但仍要求密码
先区分服务器账号密码、私钥口令和主机身份确认。访问.ssh被权限拒绝不等于密钥不存在;按权限流程核查真实用户目录,不输出私钥。
检查实际Git/IDE所用SSH客户端与HOME,使用有效配置输出确认Host别名、用户、端口、IdentityFile和IdentitiesOnly。迁移后IdentityFile可能仍引用旧用户绝对路径;优先在适用时使用用户相对路径,不盲目全局替换。Include、IdentityAgent和ProxyCommand也可能引用旧路径。重复Host配置按实际匹配结果分析,不未经确认删除。
备份config后只修复已证实错误的项,保留已有密钥、known_hosts及私钥权限。经授权可用BatchMode=yes、StrictHostKeyChecking=yes与连接超时做只认证测试;不关闭主机身份校验,不重新生成密钥来掩盖路径问题。成功欢迎信息证明该客户端可认证,不代表IDE已加载新配置或拉取成功;后续按用户实际入口验证。
机器绑定凭据
连接名、URL、驱动、账号、密码分别检查。密文完整不代表新机可解密;应使用应用官方跨机导出/导入或正常账号登录。原系统及密钥不可用时明确边界,不能保证解密。用户授权读取本地配置或配置平台时,按环境、主机、端口、库/schema和账号交叉匹配;同IP不是充分条件,历史验证也不代表当前可用。不打印密码、不把秘密写入复盘或技能、不擅自替换账号。
聊天数据库
先证明应用正在使用哪个库。附件路径与消息数据库路径经常独立。用户已使用新机时,必须保留新消息;冷备份或受支持快照后在副本操作。校验schema、索引、完整性、旧消息覆盖率、新消息数量及内容一致性。对修复后的库用独立连接检查,避免把ATTACH的旧损坏库报错归咎于新库。部分表损坏应披露范围,不推断附件文件缺失等于消息缺失。
MSIX与运行身份
工具环境的APPDATA/HKCU可能与普通桌面应用不同。通过实际日志、路径与更新时间验证;显式配置路径必须有应用加载证据。若需普通用户会话的计划任务执行,经授权后用最低所需权限,完成即移除临时任务。不把启动环境推断当作已证明的故障原因。
IDE项目迁移
检查项目.idea、Wrapper、项目局部缓存设置和SDK表中的旧盘符。IDE运行时可能保留内存设置,外部改文件不一定加载;提示用户重载,避免反复覆盖。界面里“Gradle用户主目录”与“本地安装目录”是两个概念。旧build.gradle可能使用新版已删除的配置,不能以升级Gradle替代路径修复。版本检查成功、help成功、编译成功和IDE同步成功分别验收。
慢网速与安装
下载记录保存PID、来源、已写大小、预期大小和校验信息;重试前确认没有已有有效下载。安装包签名验证后归档并比较哈希,勿重复安装已完成的软件。免费驱动可能没有静默安装能力;按用户键鼠边界启动交互向导,再核验服务与接口枚举。枚举接口不等同实际抓包,不擅自记录用户网络流量。
失败模式到验收证据
|失败模式|需要的证据| |文件复制完但历史为空|应用实际库路径、代表性旧记录、用户确认| |会话在而项目不在|原始会话与项目注册/分组分别恢复并验收| |数据库连接存在却全失效|机器凭据迁移路径与真实认证结果| |IDE版本冲突|实际Gradle路径、JVM、项目原版本及IDE重载结果| |任务栏工具有文件没显示|进程、显示配置、当前用户启动项、界面确认| |迁移进度文档相互矛盾|最终权威验收单与保留的历史更正记录|
会话工具与浏览器
会话文件、索引、项目注册、项目目录和会话归属是独立恢复项;复制原始会话并不能保证重启后侧栏和项目都恢复。针对具体版本查明支持的恢复方式,保护当前会话和用户新数据,不固定依赖某次迁移发现的内部表结构。
浏览器逐项验收个人资料、密码可用性、扩展及必要配置、书签、旧标签页。跨机器受保护的密钥不能靠整目录复制保证可用;优先支持的同步/导出。历史会话恢复时避免覆盖用户已开始使用的新配置。
容易漏掉的日常环境
便携目录、托盘工具、启动项、全局快捷键、任务栏组件都可能不出现在常规安装清单。根据旧机实际使用证据和用户偏好识别;不要等用户凭记忆逐个描述后才补。检查自动启动的用户身份与路径,进程存在不等于任务栏可见或快捷键有效。
hosts备份存在、有效条目已合并、域名解析生效是三个检查点。先确认文件编码和真实大小;结构化输出避免PowerShell混合对象格式化导致误读。日志和复盘不输出公司内部秘密。
安装形成下载—签名校验—安装—功能验收—归档的一条流程,避免用户反复追问。同一问题多次失败时重新检查实际目录、运行身份、内存配置和关联数据,而不是重复同一复制操作。
评论
欢迎交流。评论通过 GitHub 账号登录,保存在本博客的 Discussions 中。