CCR 配置备份与恢复的完整实战笔记
CCR 配置备份与恢复的完整实战笔记
【免费下载链接】claude-code-routerOne local control plane for every AI agent: route across models, fuse new capabilities, orchestrate tools, and stay fully in control.项目地址: https://gitcode.com/GitHub_Trending/cl/claude-code-router
凌晨两点发现:配置库缩水成了 512 字节
02:14,Claude Code Router 的网关突然拒绝所有请求,你打开管理页面,Provider 列表空了。cd ~/.claude-code-router一看:config.sqlite从 1.2 MB 缩成了 512 字节,config.sqlite-wal和config.sqlite-shm直接消失。你调了一周的路由规则、一个个填进去的 API Key,一夜归零。
CCR 配置备份真正保护的是什么:一个 SQLite 库
CCR 的全部运行配置都在~/.claude-code-router/config.sqlite里(Windows 在%APPDATA%\claude-code-router\config.sqlite),SQLite 还在同目录维护config.sqlite-wal和config.sqlite-shm两个辅助文件。Provider 凭据、路由规则、客户端 API Key、Agent Profile 全部存这个库中;旧版config.json只是无库时的一次性迁移来源,迁移完成后编辑它不再生效。同目录的app-data子目录还放着请求日志和用量统计。
如果这一组文件丢了,后果是你要从零重建全部 Provider、密钥和路由规则,请求日志与用量统计也一并消失。
3 分钟活下来:先停服务,再拷三个文件
⚠️ 不要在 CCR 运行时直接拷config.sqlite:WAL 未 checkpoint 时,单拷主文件会得到一个缺最后几分钟写入的坏备份。最低门槛的保底操作就三条命令,3 分钟内可完成:
ccr stop TS=$(date +%Y%m%d-%H%M%S) && mkdir -p ~/ccr-backups/$TS cp ~/.claude-code-router/config.sqlite* ~/ccr-backups/$TS/config.sqlite*这个通配符会连 wal、shm 两个辅助文件一起拷走,三件套齐了恢复才有意义。
但手动拷贝的前提是你记得做,偏偏出事的当晚你最容易忘。把这件事交给脚本,让它自己跑。
把活儿交给脚本:一份能直接跑的 CCR 配置备份脚本
下面这份脚本解决"定时自动备份 + 旧备份自动清理"两个问题,存成~/backup-ccr.sh即可:
#!/bin/bash # CCR 配置备份脚本 | 作者: <你的名字> | 日期: 2026-08-31 DEST="$HOME/claude-code-router-backups/$(date +%Y%m%d-%H%M%S)" mkdir -p "$DEST" ccr stop || exit 1 cp "$HOME/.claude-code-router/config.sqlite"* "$DEST/" tar -czf "$DEST/app-data.tgz" -C "$HOME/.claude-code-router" app-data ccr start ls -dt "$HOME"/claude-code-router-backups/*/ | tail -n +31 | xargs -r rm -rf echo "CCR 配置备份完成: $DEST"先 stop 再 cp 再 start,是为了保证主文件与 WAL 处于一致状态,tail -n +31一行则只保留最近 30 份备份,防止磁盘被备份撑满。
要让它全自动,往 crontab 里加一行(每天凌晨 3 点执行):
crontab -e # 0 3 * * * /home/<你的用户名>/backup-ccr.sh >> /home/<你的用户名>/ccr-backup.log 2>&1日志路径固定在 crontab 里,哪次备份失败翻日志就能定位,不用现场找。
故障已发生:按时间线走一遍恢复
场景一:单机配置损坏。
09:12 发现管理页面加载不出 Provider;09:15ls -lt ~/claude-code-router-backups/确认昨晚 03:00 那份备份还在;09:18ccr stop后把config.sqlite*三个文件拷回~/.claude-code-router/,再ccr start;09:21 验证恢复是否真实生效:
sqlite3 ~/.claude-code-router/config.sqlite 'SELECT key FROM app_config;'返回default说明配置表完整,再打开管理页面核对 Provider 列表与你记忆一致,本次恢复才算结束。
场景二:整机迁移。
10:02 新机器到手;10:20 把旧机器的~/.claude-code-router整个目录拷到新机器(配置库 + app-data,不能只拷单个文件);10:45ccr ui起来,管理页面里 Provider、路由规则、密钥原样都在。⚠️ 两台机器上都要在ccr stop之后再做拷贝,运行中直接编辑config.sqlite是恢复失败的常见来源。
CCR 配置备份方案怎么选,看这张表
| 方案 | 上手成本 | 维护负担 | 适用规模 |
|---|---|---|---|
| 手动三条命令 | 零成本 | 全靠记性,人为失误风险高 | 改大配置前偶尔备一次 |
| 脚本 + cron(本文方案) | 一次性 10 分钟 | 配好即零,自动清理旧份 | 长期在线的单机部署,首选 |
| 桌面 UI Settings 导出 | 点一下 | 无自动化,靠手动触发 | 重大变更前留一份交叉核对 |
如果你的 CCR 长期跑在固定机器上,直接用"脚本 + cron",UI 导出只在大改动前顺手点一下。
一句话原则
备份的价值不在于备份本身,而在于出事当天你能在 10 分钟内恢复。配置数据库的位置与生效机制详见配置数据库位置,ccr各子命令用法见CLI 命令参考。
【免费下载链接】claude-code-routerOne local control plane for every AI agent: route across models, fuse new capabilities, orchestrate tools, and stay fully in control.项目地址: https://gitcode.com/GitHub_Trending/cl/claude-code-router
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
