Files

7.2 KiB
Raw Permalink Blame History

Recovery Checklist

这份文档的目标是让这台 macOS 机器在系统崩溃、整机重装或新机器迁移后, 尽可能快地恢复到可工作的开发状态。

当前覆盖范围

已经纳入 dotfiles 仓库管理的内容:

  • ~/.zshrc.d/*.zsh 的受管片段
  • ~/bin 下的受管 wrapper
  • codex 默认走 Clash 的代理包装
  • 一部分 shell / Clash / kubectl 的窄脚本入口

还没有完全版本化,仍需单独备份的内容:

  • ~/.ssh/
  • ~/.gnupg/
  • ~/.config/secrets/
  • ~/.kube/config
  • ~/.docker/config.json
  • macOS Keychain 中的 token、证书、登录态
  • Clash 订阅凭据和未脱敏的 provider 配置
  • ~/.zshrc 里尚未迁移进 dotfiles 的旧配置
  • 浏览器数据、VS Code 扩展与个人设置
  • OrbStack / Docker / 本地模型 / 数据目录

结论: 当前这套 dotfiles 能恢复“基础 shell 环境、代理入口、常用脚本入口”, 但还不能替代整机备份。

事前准备

每次大改环境前,确认以下内容有备份:

tar czf ~/Desktop/recovery-secrets-$(date +%Y%m%d).tgz \
  ~/.ssh \
  ~/.gnupg \
  ~/.config/secrets \
  ~/.kube/config \
  ~/.docker/config.json

另外导出或确认这些项目可恢复:

  • Gitea 可访问:http://192.168.1.83:33000/gao/dotfiles.git
  • 你常用的私有仓库地址和访问方式
  • Clash 订阅来源或脱敏后的基础配置
  • Keychain 里关键 token 是否有外部保存方案

系统重装前,先跑一遍:

./scripts/backup/check-private-assets.sh

如果要生成本机私有归档:

./scripts/backup/create-private-backup.sh

注意:这个归档会包含 SSH、GPG、kube、Docker、Clash 私有配置等敏感内容, 必须只放在受控位置。

恢复顺序

1. 系统初始化

完成 macOS 安装后,先做最小系统准备:

xcode-select --install

然后安装 Homebrew。

安装完成后,至少保证这些基础命令可用:

  • git
  • curl
  • jq
  • zsh

如果仓库已经可访问,建议在拉取 dotfiles 后立刻执行:

brew bundle --file ~/work/codes/tools/macos/dotfiles/Brewfile

仓库还提供一个锁定式版本快照:

  • config/homebrew/Brewfile.lock.json

用途是帮助你确认“当前机器当时装的是哪些版本”,但它不是 Homebrew 的 原生严格锁文件。

2. 拉取 dotfiles

mkdir -p ~/work/codes/tools/macos
git clone http://192.168.1.83:33000/gao/dotfiles.git ~/work/codes/tools/macos/dotfiles
cd ~/work/codes/tools/macos/dotfiles

如果当时局域网 Gitea 不可达,使用离线备份或其他远端镜像。

3. 接入 shell 与 wrapper

./install/doctor.sh || true
./install/link.sh
source ~/.zshrc

执行后应得到这些结果:

  • ~/.zshrc 含有 dotfiles bootstrap block
  • ~/.zshrc.d/*.zsh 链接到仓库内的 zsh/
  • ~/bin/codex 和 ~/bin/codex-direct 链接到仓库内的 bin/

检查:

command -v codex
command -v codex-direct
bash ./install/doctor.sh

4. 恢复机密与本机状态

把这些内容恢复回 home 目录:

mkdir -p ~/.config/secrets

需要恢复或重新导入:

  • ~/.ssh/
  • ~/.gnupg/
  • ~/.config/secrets/
  • ~/.kube/config
  • ~/.docker/config.json
  • Keychain 中的登录项、API token、证书

这些项目的标准清单已经记录在:

  • config/recovery/private-assets.tsv

如果你要继续使用本机特有变量,复制本地覆盖文件:

cp zsh/90-machine.local.example.zsh zsh/90-machine.local.zsh

然后把下面这类值写入 zsh/90-machine.local.zsh 或 ~/.config/secrets/*.zsh:

  • JAVA_HOME
  • ANTHROPIC_BASE_URL
  • ANTHROPIC_AUTH_TOKEN
  • 其他不应该进入 git 的 token 和内网地址

如果只是新机器初始化,先创建 secrets 骨架:

./scripts/secrets/bootstrap.sh

5. 恢复语言与开发运行时

这台机器当前依赖的运行时包括:

  • Homebrew
  • Oh My Zsh
  • Miniforge / conda
  • nvm
  • bun
  • pnpm
  • jenv
  • OpenJDK 21
  • Flutter

建议顺序:

  1. 安装 Oh My Zsh
  2. 安装 Miniforge
  3. 安装 nvm 并恢复 Node
  4. 安装 bun
  5. 安装 pnpm
  6. 安装 jenv 和 OpenJDK 21
  7. 恢复 Flutter 路径对应目录

恢复完成后检查:

zsh --version
node -v
pnpm -v
bun -v
java -version
python3 --version

6. 恢复 Clash 与 Codex 代理

当前 Codex 默认通过 Clash 的本地混合端口 7890 工作。

确保 ClashX 或等价客户端满足:

  • 模式 = 规则
  • 混合代理端口 = 7890
  • 外部控制器 = 127.0.0.1:9090
  • OpenAI / ChatGPT 相关域名走同一个稳定节点

仓库里现在有两份公开配置:

  • config/clash/config.public.yaml
  • config/clash/clashx.public.yaml

如果已经把 Clash 配置迁入 dotfiles/config/clash/,恢复后可直接重载:

./scripts/clash/reload.sh ~/.config/clash/clashx.yaml

仓库里现在已经有一个脱敏模板:

  • config/clash/clashx.public.yaml

恢复时有两种方式:

  1. 用它复制出本机工作副本,然后手动填回私有节点 server/password
  2. 重新从订阅或私有备份恢复完整节点段,再覆盖本机 live config

检查代理与路由:

codex-proxy-status
./scripts/clash/check-openai-route.sh

7. 恢复容器与平台工具

按需恢复这些工具:

  • OrbStack
  • Docker CLI / buildx
  • kubectl
  • gh
  • ollama
  • displayplacer

检查:

docker ps
kubectl version --client
gh --version
ollama --version

8. 恢复工作目录

拉取你常用的工作仓库,至少包括:

  • ~/work/codes/tools/macos
  • 业务项目仓库
  • 私有基础设施仓库

如果 shell alias、脚本或路径依赖这些目录,必须恢复到相同路径。

验收清单

恢复完成后,至少跑一遍:

source ~/.zshrc
command -v codex
command -v kubectl
command -v java
command -v pnpm
bash ~/work/codes/tools/macos/dotfiles/install/doctor.sh
bash ~/work/codes/tools/macos/dotfiles/scripts/shell/lint-zsh.sh

再确认这些真实场景:

  • codex 启动正常
  • codex 不再直连外网,而是通过 Clash
  • codex-direct 可用于临时绕过代理
  • kubectl alias 仍然指向预期 wrapper
  • Java / Node / Python / Bun 路径正确

建议的后续完善

要把恢复能力继续提高,下一步建议做这些事:

  1. 把 ~/.zshrc 里仍然存在的旧配置分批迁入 dotfiles/zsh/*.zsh
  2. 把敏感 token 全部迁出 ~/.zshrc,改放 ~/.config/secrets/ 或 Keychain
  3. 补一个 Brewfile
  4. 把 Clash 的可公开部分配置迁入 dotfiles/config/clash/
  5. 给 README.md 增加 “新机器初始化” 和 “灾难恢复” 的入口链接

最小恢复命令块

如果你只想看最短路径,按下面跑:

xcode-select --install
# 安装 Homebrew、git、curl、jq、zsh

mkdir -p ~/work/codes/tools/macos
git clone http://192.168.1.83:33000/gao/dotfiles.git ~/work/codes/tools/macos/dotfiles
cd ~/work/codes/tools/macos/dotfiles
brew bundle --file Brewfile
./install/link.sh
source ~/.zshrc

# 恢复 secrets、ssh、kube、docker、keychain
# 安装 nvm / bun / pnpm / miniforge / jenv / openjdk / clashx / orbstack

./install/doctor.sh
./scripts/clash/check-openai-route.sh