Skip to content

云端同步与配置备份策略:重装系统或换新电脑一秒满血复原 ​

本文面向已经跨过"能连上"阶段、开始在意稳定性与可迁移性的用户。如果你目前还在纠结订阅怎么选,建议先看 机场选购总纲,再回来读这篇。

一、TL;DR:先给结论 ​

大多数人的代理配置只存在于两个地方:浏览器书签里的订阅链接,和脑子里模糊的"我记得好像是这么配的"。这两样东西在重装系统的那一刻都会归零。

正确的做法是把配置拆成三层,分别用不同的工具托管:

层级内容载体恢复难度
订阅层订阅 URL、流量面板账号密码管理器极低,5 分钟
覆写层自定义节点、proxy-groups、rule-providers、脚本Git 私有仓库(age/sops 加密)中,10 分钟
状态层客户端缓存、内核日志、证书、系统代理开关客户端自带导出 / 云盘冷备低,但最容易漏

一句话方案: 覆写层进 Git 私有仓库做版本化,订阅链接进密码管理器,客户端状态层用云盘同步目录做冷备。三层都到位后,换新机全流程可以压到 30 分钟以内,其中人工操作不超过 5 分钟。

💡 👑 2026 全网综合第一主推 · 【光速云】读者专享特惠通道:
IEPL 企业级内网专线 + 全球IPLC,单节点最高 2.5Gbps,全节点 x1 无倍率,原生解锁 ChatGPT / Claude / Netflix 全区:
8折立减AMM复制 📋
直达光速云官网 ↗

二、为什么"重新订阅一下就好了"是最大的认知陷阱 ​

订阅链接的核心特征是:它是一份会自己变的文档。机场在后台换节点、改端口、加中转,你这边拉一次订阅就同步了。这给人一种错觉——配置不存在,随时能重建。

这个错觉在三种场景下会立刻破产。

第一种,覆写层丢失。 你花了两周调出来的分流规则大概率不在订阅里。订阅返回的是最朴素的 proxies 加一个默认 Proxy 组,而你的 Rule 组里手动塞了流媒体独立出口、AI 组走原生 IP 节点、Apple 组直连,还配了三套远程 rule-providers。这些内容全部写在客户端的"覆写"或"Merge"里。订阅可以重新拉,覆写不能重新想。

第二种,订阅地址本身失效。 机场被攻击、换域名、或者你自己忘了续费导致账号被清理。订阅 URL 里的 token 一旦失效,你没有备份就真的什么都没有了。

第三种,本地网络环境的隐性依赖。 你在家里调通了,是因为路由器上挂了一条静态路由,或者局域网 DNS 指向了自建的 AdGuard Home。换到新环境后配置一模一样却跑不通,问题从来不在配置文件里。

从网络机理上讲,一份"能用的代理环境"等于:

可用出口(订阅) + 客户端内核(Mihomo/sing-box 版本) + 分流决策(覆写层) + 系统集成(TUN/证书/系统代理)

这四项里只有第一项是可替换的。其余三项都是沉没成本,必须显式备份。

三、配置资产分层清单:到底哪些东西丢了真的会疼 ​

把资产列清楚,才知道该备份什么。下面这份清单按"丢失后的痛苦指数"排序:

资产典型路径/位置痛苦指数备份方式
覆写/Merge 配置客户端"覆写"面板或 merge.yaml★★★★★Git
自定义规则集本地 ruleset/*.yaml★★★★☆Git
订阅 URL + 面板账号客户端"订阅"面板★★★★☆密码管理器
客户端 Profile 导出profiles/ 目录★★★☆☆Git(脱敏后)
分流脚本 / 定时任务script.js、crontab★★★☆☆Git
TUN 与证书配置系统代理设置、根证书★★☆☆☆截图 + 文字记录
内核版本号客户端设置页★★☆☆☆文字记录
节点测速历史客户端缓存★☆☆☆☆不用备

关键在于:痛苦指数最高的两项(覆写层和规则集)恰恰是绝大多数人从来没备份过的。 用户重装完系统,导入订阅,发现"能上网了",就以为恢复完成——直到他发现 Netflix 走错节点、公司内网被代理劫持,才意识到丢了什么。

四、六种同步方案量化对比矩阵 ​

下面这张表是本文的核心决策依据。恢复耗时以"新机从零到可用"计,成本按个人使用量估算。

方案恢复耗时版本回滚敏感信息加密学习成本多端并发离线可用冲突处理月成本
Git 私有仓库 + age2–5 min✅ 完整历史需自建,强度高中高好(分支合并)✅ clone 后本地可读显式 merge,可控0
云盘同步目录(坚果云/OneDrive)1–3 min⚠️ 部分支持依赖服务商低差,易产生冲突副本✅隐式,易覆盖0–15 元
对象存储 + rclone1–2 min⚠️ 开版本控制才行依赖服务商中好❌ 需联网需自己写脚本1–5 元
私有 NAS / WebDAV5–10 min⚠️ 取决于快照自控高好✅ 内网需自建硬件摊销
客户端自带订阅0❌明文极低N/A❌N/A订阅费
手动导出 + 加密压缩包10–30 min❌强极低差✅需人工0

结论: 单方案都不完美。生产级组合是 Git 主存 + 云盘冷备 + 密码管理器存密钥。Git 负责版本化和冲突可控性,云盘负责"手滑 git push --force 之后还能捞回来",密码管理器负责订阅 URL 和加密口令。

想深入了解节点质量与线路差异如何影响恢复后的实际体验,可以对照 线路技术解析。

五、分平台实操:配置到底存在哪 ​

Windows ​

Clash Verge Rev 的配置根目录在 %APPDATA%\io.github.clash-verge-rev.clash-verge-rev\,其中 profiles/ 存订阅产物,Merge 与 Script 分别对应覆写和脚本。建议只把 Merge、Script、profiles/*.yaml 纳入版本控制,跳过 logs/ 和 cache.db。

系统代理状态不要靠备份恢复,用命令重设即可:

powershell
netsh winhttp show proxy
reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyEnable

macOS ​

路径是 ~/Library/Application Support/<客户端名>/。macOS 上还有一个额外变量:如果启用了 TUN 模式,系统里会残留 utun 网卡和 DNS 配置。还原后先跑一遍 scutil --dns | head -20 确认没有指向已经卸载的 DNS 服务。

iOS / iPadOS ​

iOS 的沙盒机制决定了你无法直接拷贝配置文件。可行路径有三条:客户端的 iCloud 同步开关(如 Stash)、导出为 URL Scheme 链接自行保管、或者干脆把覆写层放在 Git 里,新机通过客户端内置的"从 URL 导入"拉取。

Android ​

/Android/data/<包名>/files/ 在 Android 11 之后不再允许第三方文件管理器直读。要么用客户端自带的导出功能,要么走 root。不要指望用云盘 App 自动同步这个目录,这是最容易被误判为"已经备份好了"的场景。

软路由 / OpenWrt ​

配置在 /etc/mihomo/ 或 /etc/openclash/。这类设备最稳妥的做法是把整个 /etc/ 下的相关目录用 tar 打包后通过 rclone 推到对象存储,并保留最近 7 个版本。路由器上的 U 盘说坏就坏。

六、Git 管理个人代理配置的完整工作流 ​

初始化一个有基本卫生习惯的仓库:

bash
mkdir airpick-config && cd airpick-config
git init
git config core.autocrlf false   # 关键:避免 CRLF 污染 YAML
git config core.fileMode false

cat > .gitignore <<'EOF'
logs/
*.log
cache.db
cache.db-*
profiles/*.yaml
*.bak
EOF

.gitignore 里屏蔽 profiles/*.yaml 是有意为之——订阅产物里包含节点密码和 UUID,属于高频变动且高风险的内容。真正需要版本化的是你自己手写的覆写层。

接着把覆写层拆成独立文件:

bash
mkdir -p merge ruleset
# merge/proxy-groups.yaml  merge/dns.yaml  merge/rules.yaml
git add merge ruleset .gitignore
git commit -m "init: 覆写层基线"

然后是加密。裸放明文密钥的仓库就算设成私有,也不该出现在任何你信任度存疑的备份链路上。推荐 age 配合 sops:

bash
age-keygen -o key.txt
# 把 key.txt 存进密码管理器,不要进仓库
sops --encrypt --age $(grep public key.txt | awk '{print $NF}') \
  merge/proxy-groups.yaml > merge/proxy-groups.enc.yaml

多设备同步时,每台机器上 git pull 后本地解密,明文文件继续加进 .gitignore。这样即使仓库泄露,攻击者拿到的也只是密文。

多机并发的坑: 如果你在台式机和笔记本上同时改同一个文件,Git 会给你一个冲突而不是像云盘那样静默生成"副本 (2)"。这是优点,但要养成 git pull --rebase 再动手的习惯,否则 YAML 冲突合并会非常痛苦。

关于客户端内核的覆写语法差异,可以参考 客户端配置手册,不同内核的字段名并不完全通用。

七、换新机 30 分钟满血还原 SOP ​

按顺序执行,不要跳步:

  1. 装内核,装客户端,先不要导入订阅。 版本号对齐——旧机是 Mihomo 1.18.x,新机就别直接上 1.19 的大版本,配置语法可能已经变了。

  2. 拉取覆写层仓库。

    bash
    git clone git@github.com:<you>/airpick-config.git
    cd airpick-config && sops --decrypt --in-place merge/proxy-groups.enc.yaml
  3. 从密码管理器取出订阅 URL,在客户端里添加订阅,此时节点列表应该出现。

  4. 把覆写层挂载进客户端,重启内核,检查 proxy-groups 是否按预期生成。

  5. 验证分流:依次访问一个国内站点、一个需要走代理的站点、一个流媒体站点,观察客户端连接面板中命中策略与预期是否一致。

  6. 恢复系统集成:开启 TUN 或系统代理,确认证书信任、DNS 配置。

  7. 跑一遍诊断(见下一节),确认没有静默故障。

真正的"一秒满血"不是指配置自动飞过来,而是指你不必再做任何一次决策——所有决策都已经在仓库里了。

八、还原后跑不通?抓包排障诊断手册 ​

新机恢复后的问题大多集中在四类:时间偏差、DNS 解析、订阅拉取、内核与配置不匹配。按下面的顺序排查。

8.1 时��偏差(VMess/VLESS 隐形杀手) ​

bash
# Linux / macOS
date -u
# Windows
w32tm /stripchart /computer:time.windows.com /samples:3

系统时间与真实时间偏差超过 90 秒,VMess 类协议的认证会直接失败,而且报错信息往往含糊其辞。这是换新机后最高频的"配置没错但就是不通"。

8.2 订阅拉取链路 ​

bash
# 解析是否正常
dig +short sub.example.com

# 到订阅服务器的路径质量
mtr -rwzc 20 sub.example.com

# 直接探测订阅接口
curl -s -o /dev/null -w "%{http_code} %{time_total}s %{size_download}B\n" \
  "https://sub.example.com/api/v1/client/subscribe?token=YOUR_TOKEN"

期望结果是 200 且 size_download 明显大于 1KB。返回 403 说明 token 失效或 UA 被拦,返回 200 但体积只有几百字节说明返回了一个错误页面。

8.3 本地代理端口与出站连通性 ​

bash
nc -vz 127.0.0.1 7890
curl -x http://127.0.0.1:7890 -s -o /dev/null \
  -w "%{http_code} %{time_total}s\n" https://www.gstatic.com/generate_204

第一条不通说明内核没起来或端口被改;第二条返回非 204 说明出站有问题。

8.4 判定速查表 ​

现象首要怀疑验证命令处理
全部节点超时系统时间偏差date -u同步 NTP
部分节点通、部分不通规则误命中或节点下线客户端连接面板检查 proxy-groups
订阅更新失败DNS 污染 / token 失效dig + curl -w换 DNS 或重取订阅
浏览器通、终端不通系统代理未覆盖终端env | grep -i proxy配置 https_proxy 或开 TUN
能 ping 通但 TLS 握手失败中间设备阻断 / MTUsudo tcpdump -i any -n 'port 443'调整 MTU 或换协议
局域网设备无法访问TUN 与局域网网段冲突ip route / netstat -rn添加绕过路由

关于不同线路在故障状态下的表现差异,专线 vs 中转的实测对比 里有更细的数据。

九、避坑矩阵:这些操作会让你在关键时刻掉链子 ​

坑为什么会踩后果正确做法
只备份订阅链接误以为订阅等于配置覆写层全丢三层分离备份
明文密钥进公开仓库图省事节点被白嫖直至封禁age/sops 或私有仓库
云盘同步客户端活动目录以为能自动同步运行时写入产生冲突副本只同步静态文件
依赖"上次导出"的压缩包导出后没再更新恢复的是三个月前的配置设置定期提醒或 CI
忽略 core.autocrlfWindows/macOS 混用YAML 被 CRLF 污染解析失败显式设为 false
用脚本覆盖订阅产物想自动化订阅更新后覆写被抹掉用官方覆写机制而非覆盖文件
备份了节点但没备份内核版本认为内核无所谓大版本升级后语法不兼容记录版本号
只在一台机器上备份没有异地副本硬盘坏 = 全丢云盘 + Git 双副本

还有一类更隐蔽的:伪备份。某些客户端会显示"已同步到 iCloud",但实际上只同步了订阅列表,不包括覆写。判断标准很简单——把客户端卸载干净,重新安装,看它能不能在没有手动干预的情况下恢复出完整的 proxy-groups。不能,就说明你的备份是假的。

十、常见问题 FAQ ​

Q1:订阅链接算不算敏感信息,能不能直接放 Git 私有仓库?

算,而且相当敏感。订阅 token 泄露意味着别人可以直接消耗你的流量。即便仓库是私有的,只要你有协作者、或者账号被撞库,风险就存在。建议放进密码管理器,或者用 sops 加密后入库。

Q2:为什么我用云盘同步客户端目录,经常出现"配置 (2).yaml"?

因为客户端在内核运行时会对配置文件做读写,云盘的文件级同步无法理解这种语义。要同步就用"导出后同步"的静态文件,别直接同步活动目录。

Q3:多台电脑用同一个订阅,会不会互相顶掉?

绝大多数机场的订阅是按账号计并发,不是按设备数。同一个订阅在多台设备上使用一般没问题,但如果你的套餐限制"同时在线设备数",那就需要留意。配置层面,多机同步要解决的是覆写层一致性,不是订阅本身。

Q4:Git 里改了配置,客户端不生效?

先确认客户端读的是仓库里的文件,还是它自己内部复制的副本。多数客户端会把覆写内容导入内部数据库,git pull 之后必须在客户端里手动重新应用一次。

Q5:换新机后 TUN 模式失效?

检查三件事:驱动/内核扩展是否重新安装、是否有残留的旧 utun 路由(netstat -rn | grep utun)、以及 DNS 设置是否被写成了旧环境的地址。

Q6:能不能用 CI 自动拉取订阅并生成配置?

可以,但要小心。自动化的正确形态是"拉取订阅 → 应用覆写 → 输出最终配置",而不是"用脚本覆盖客户端目录"。前者可控,后者会在客户端更新时全崩。

Q7:备份频率建议多久一次?

规则是:每次手动改了覆写层就提交一次。别定周期,定事件。没有改动就没有提交,这不是靠 cron 解决的问题。

十一、延伸阅读 ​


最后一句实话: 配置备份这件事,唯一有效的检验方式是——在某个周末,主动把你的客户端卸载干净,然后照着 SOP 走一遍。能不能在 30 分钟内恢复,答案只有那一次实测知道。备份不是写出来的,是恢复出来的。

#代理配置备份 #云同步 #Clash配置 #换新机还原 #Git工作流

数据仅供参考,请以机场官网实时信息为准。遵守法律法规,文明合规出海。