☰
把 Claude Code Router 配置备份做起来:从随手复制到定时任务
2026/10/17 2:47:50 网站建设 项目流程

把 Claude Code Router 配置备份做起来:从随手复制到定时任务

【免费下载链接】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

某个深夜升级完 Claude Code Router,启动一看,配好的提供商和路由规则全没了——旧版 JSON 配置在迁移过程中被覆盖,API 密钥只能逐个重新填。从那以后,"Claude Code Router 配置备份"成了我装完软件第一件事,而不是等出事后才想起来的事。

先搞清楚:哪些东西丢了就完蛋了

先别急着敲命令,把资产清单看一遍,心里有数才知道该保谁。

Claude Code Router 的所有状态都集中在~/.claude-code-router/下(Windows 是%APPDATA%\claude-code-router)。核心是一个 SQLite 库,旧版config.json的 JSON 配置在首次启动时会自动迁移进库里,这个机制可以在 config-repository.ts 里看到。具体路径常量定义在 constants.ts:

文件 / 目录里面是什么丢了会怎样
~/.claude-code-router/config.sqlite提供商、路由规则、API 密钥、运行状态⚠️ 全部归零,密钥得一个个重新填
~/.claude-code-router/config.json旧版 JSON 配置,迁移后自动归档进库只剩从老版本回退时才用得上,不致命
~/.claude-code-router/app-data/request-logs.sqlite和request-log-bodies/请求日志与原始请求体可观测数据清空,排查历史请求无从查起
~/.claude-code-router/app-data/context-archive.sqlite上下文归档跨会话续接失效,对话上下文要重搭
~/.claude-code-router/app-data/usage.sqlite用量与计费统计用量对账从零开始
~/.claude-code-router/app-data/certs/本地代理的 CA 证书与私钥系统代理失效,得重新签发并重装

macOS/Linux 上app-data是配置目录的子目录,Windows 上它和配置目录同级。结论一句话:备份整个.claude-code-router目录即可,不用挑文件。

轻度事故:改坏了,回个滚就行

最高频的翻车姿势:手改了一条路由规则,一存,服务就不认了。

标准恢复动作就是下面三条,口头禅记住:改之前先 cp 一份。

改配置之前先复制一份主库出来,作为回滚点:

cp ~/.claude-code-router/config.sqlite ~/.claude-code-router/config.sqlite.bak

确认改坏了,停服务、覆盖回去、再启动:

ccr stop cp ~/.claude-code-router/config.sqlite.bak ~/.claude-code-router/config.sqlite ccr start

跑完ccr start应该无报错直接拉起,再开ccr ui看一眼,提供商和路由规则应该跟改动前一模一样。别问我怎么知道的,我每次回滚都是这三条命令搞定。

中度事故:文件没了,从备份里捞

文件真没了,靠的就是一份随时能用的备份。

合格的备份要凑齐三件套:整目录打包(不挑文件)、带时间戳的命名(多版本能区分)、异地副本(磁盘同死时还有救)。下面这个脚本一次搞定打包加清理,只保留最近 14 份:

#!/usr/bin/env bash # ~/ccr-backup.sh set -euo pipefail DEST_DIR="$HOME/ccr-backups" TS="$(date +%Y%m%d_%H%M%S)" mkdir -p "$DEST_DIR" tar -czf "$DEST_DIR/ccr-$TS.tar.gz" -C "$HOME" ".claude-code-router" ls -1t "$DEST_DIR"/ccr-*.tar.gz | tail -n +15 | xargs -r rm -f echo "backup done: $DEST_DIR/ccr-$TS.tar.gz"

执行完会看到一行backup done: ...的路径输出,记下它。备份还要验,解压列表看一眼内容对不对:

tar -tzf ~/ccr-backups/$(ls -1t ~/ccr-backups | head -1) | head -5

你应该看到.claude-code-router/config.sqlite、.claude-code-router/app-data/之类的条目。异地副本直接scp到另一台机器或者丢进云盘,这一步最容易翻车,因为平时你觉得永远不会用到它。

重度事故:机器废了,整个环境搬走

机器没了,整个.claude-code-router目录就是你的全部家当。

迁移是个六步流程,每步一句动作加一条命令:

  1. 停掉旧机器上的服务:ccr stop
  2. 整目录打包:tar -czf ~/ccr-full.tar.gz -C ~ .claude-code-router
  3. 新机器先装好工具:npm install -g @musistudio/claude-code-router
  4. 把包传过去:scp ~/ccr-full.tar.gz user@new-host:~/
  5. 在新机器解包到位:tar -xzf ccr-full.tar.gz -C ~
  6. 启动:ccr start

服务起来之后打开ccr ui,核对提供商列表和密钥数量跟旧机器一致,齐了才算搬完。

让备份自己跑:定时任务 + 清理策略

手动备份靠自觉,自觉靠不住,挂到定时任务上。

macOS/Linux 在 crontab 里加一行,每天凌晨 3 点执行脚本,日志写到备份目录里:

0 3 * * * /bin/bash $HOME/ccr-backup.sh >> $HOME/ccr-backups/backup.log 2>&1

清理策略脚本里已经带了(保留最近 14 份),不用再额外配置。macOS 想用 launchd 的,建一个每日 03:00 触发的 plist 指向~/ccr-backup.sh即可。跑完之后tail -5 ~/ccr-backups/backup.log确认没报错,没验证过的备份等于没有备份。

收个尾:一张 checklist

换机器前、上线前,把这七条过一遍:

  • 主库config.sqlite的备份存在,文件名带时间戳
  • 异地副本(另一台机器或云盘)已就位
  • tar -tzf列表校验至少通过过一次
  • ccr stop/ccr start完整重启无误
  • 恢复后核对提供商列表与 API 密钥数量和原环境一致
  • cron 任务已成功跑过一次,日志无报错
  • 在备用机器上端到端演练过一次完整恢复

✅ 备份的意义不在于文件放在那儿,而在于出事那天,你能 30 秒内把系统拉起来。

【免费下载链接】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),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询