Files
ProjectAGiPrompt/35-黑苹果DELL/2-工作电脑备份/7-数据同步备份-高级解决方案.md
2026-06-24 17:20:42 +08:00

15 KiB
Raw Blame History

两台 Windows 工作主机数据同步方案

1. 背景与环境

项目 笔记本(源) 台式机(目标)
型号 联想 R9000P 自组装台式机
系统 Windows 11 专业版 Windows 11 LTSC
用户 wddsh wdd
局域网IP - 192.168.1.194
WSL2 可用 已安装
网络 局域网互通,台式机已配置 Clash Verge TUN

2. 同步场景分析

场景 A微信数据高优先级

  • 路径: 笔记本 C:\Users\wddsh\Documents\xwechat_files / 台式机 C:\Users\wdd\xwechat_files
  • 特征: ~30GB海量小文件聊天记录、图片、视频、语音、缓存
  • 难点: 文件数量极多(可能 10 万+),微信运行时数据库锁定,两端都会登录微信产生新数据
  • 频率: 实时同步(微信关闭后触发最佳)
  • 方向: 双向(两端都可能产生新聊天记录和文件)

场景 BGit 项目仓库(高优先级)

  • 路径: 多个项目分布在 Documents\IdeaProjects 等目录
  • 特征: 含 .git 目录,大量小文件,已有版本管理
  • 难点: 需要保持 .git 完整性,可能有 node_modules 等超大依赖目录
  • 频率: 持续双向同步
  • 方向: 双向

场景 C开发工具配置中优先级

  • 路径: IDEA 配置在 %APPDATA%\JetBrainsVS Code 配置等
  • 特征: 配置文件体量小,但路径分散
  • 难点: 部分配置含绝对路径,需要筛选可移植项
  • 频率: 变动时同步
  • 方向: 单向或双向

3. 方案对比

方案一WSL2 rsync通过 SSH 隧道)

Tip

你已有一个可用的微信 rsync 脚本(6-微信数据备份.md),可以复用和扩展。

维度 评价
海量小文件性能 rsync 增量算法高效,-z 压缩减少传输量
断点续传 --partial 原生支持
双向同步 原生不支持双向,需要额外脚本或 unison 替代
自动化 配合 cron/Task Scheduler 轻松定时
部署复杂度 两端都需要 WSL2 + SSH 配置
文件监控 需要额外工具inotifywait/fswatch
适合场景 仅作为首次全量灌入工具,不适合持续双向同步

关键优势

  • 增量传输,只传输变化的部分,对 30GB 小文件场景极其高效
  • 你已有成熟的 rsync 脚本基础
  • 可精确控制 --exclude 排除规则

关键劣势

  • 双向同步困难,冲突解决需要手动处理
  • WSL2 访问 Windows 文件系统(/mnt/c)有 I/O 性能损耗
  • 非实时,需定时触发

方案二SyncthingP2P 实时同步)

维度 评价
海量小文件性能 初次扫描慢,后续增量快;有文件监控加速
断点续传 支持
双向同步 原生双向,冲突自动检测并保留两个版本
自动化 后台服务,文件变化自动触发
部署复杂度 图形界面,零配置发现
文件监控 内置 fsnotify变化秒级感知
适合场景 A微信数据双向、BGit仓库双向、C配置文件双向

关键优势

  • 原生双向同步 + 冲突处理
  • 实时文件监控,修改即同步
  • Windows 原生运行,无 WSL 性能损耗
  • Web UI 管理界面,可视化监控同步状态
  • P2P 加密传输,无需第三方服务器
  • 支持 .stignore 排除规则(类似 .gitignore

关键劣势

  • 首次同步 30GB 小文件扫描建索引较慢(约 10-30 分钟)
  • 不如 rsync 的增量算法精细rsync 做块级 diffSyncthing 做文件级 diff
  • 内存占用相对较高(索引占用)

方案三RobocopyWindows 原生)

维度 评价
海量小文件性能 多线程 /MT:16 有帮助,但无增量 diff
断点续传 /Z 可恢复模式
双向同步 不支持,纯镜像/复制
自动化 配合 Task Scheduler
部署复杂度 系统自带,零安装
文件监控 /MON 参数支持变化监控
适合场景 简单的单向镜像

关键优势

  • 系统自带,无需安装任何东西
  • /MT 多线程复制,对大量小文件有帮助
  • 通过 SMB 共享直接访问,无需 SSH

关键劣势

  • 无块级增量,每次传输完整变化文件
  • 依赖 SMB 网络共享,需配置防火墙和共享权限
  • 无双向同步能力

方案四Unison双向 rsync 增强)

维度 评价
海量小文件性能 基于 rsync 算法
双向同步 专为双向设计,冲突检测与合并
部署复杂度 两端需要相同版本
适合场景 BGit仓库精确双向

4. 推荐方案Syncthing 统一管控 + rsync 辅助首次灌入

Important

三大场景全部需要双向同步,Syncthing 作为唯一的持续同步引擎rsync 仅在首次全量灌入时使用以加速初始化。

总体架构

┌────────────────────────────────────────────────────────────┐
│                笔记本 (R9000P, Win11 Pro)                    │
│                                                            │
│  ┌──────────┐  ┌──────────────┐  ┌───────────────────┐    │
│  │ 微信数据  │  │  Git 项目仓库 │  │ 开发工具配置       │    │
│  │ 30GB     │  │  多个 repos   │  │ IDEA/VSCode 等    │    │
│  └────┬─────┘  └──────┬───────┘  └────────┬──────────┘    │
│       │               │                   │                │
│       └───────────────┼───────────────────┘                │
│                       │                                    │
│              ┌────────┴────────┐                           │
│              │   Syncthing     │                           │
│              │  (统一双向实时)  │                           │
│              └────────┬────────┘                           │
│                       │                                    │
└───────────────────────┼────────────────────────────────────┘
                        │
                   P2P 加密传输
                    (局域网)
                        │
┌───────────────────────┼────────────────────────────────────┐
│                       │                                    │
│              ┌────────┴────────┐                           │
│              │   Syncthing     │                           │
│              │  (统一双向实时)  │                           │
│              └────────┬────────┘                           │
│       ┌───────────────┼───────────────────┐                │
│       │               │                   │                │
│  ┌────┴─────┐  ┌──────┴───────┐  ┌────────┴──────────┐    │
│  │ 微信数据  │  │  Git 项目仓库 │  │ 开发工具配置       │    │
│  │ 双向同步  │  │  双向同步     │  │ 双向同步           │    │
│  └──────────┘  └──────────────┘  └───────────────────┘    │
│                                                            │
│                台式机 (Win11 LTSC)                          │
└────────────────────────────────────────────────────────────┘

首次全量灌入(可选加速):
  笔记本 WSL2 ──rsync──▶ 台式机 WSL2  (一次性,完成后切换到 Syncthing)

场景 A微信数据 → Syncthing双向实时+ rsync 首次灌入

Warning

微信数据双向同步的核心风险: 微信不支持同一账号在两台 PC 同时登录。因此「双向同步」的实际含义是——你在哪台机器上登录微信,新产生的聊天数据就从那台同步到另一台。两端不会同时产生新数据,冲突风险较低。

为什么选 Syncthing

  • 双向同步是硬需求rsync 无法满足
  • 微信数据以追加为主新聊天、新图片Syncthing 的文件级增量足够高效
  • 实时文件监控,切换登录设备后新数据自动同步
  • Windows 原生运行,无 WSL I/O 损耗

为什么首次灌入用 rsync

  • 30GB 海量小文件的首次传输rsync 的块级增量 + 压缩 + 断点续传最稳定
  • Syncthing 首次扫描建索引 + 传输 30GB 小文件可能需要数小时
  • 用 rsync 先把数据灌到台式机,再让 Syncthing 「发现」已有数据建索引,速度大幅提升

实现要点:

  1. 首次灌入:复用已有 rsync 脚本(6-微信数据备份.md),将笔记本微信数据全量推送到台式机
  2. 持续同步:两端 Syncthing 配置微信数据目录为共享文件夹,类型设为 Send & Receive(双向)
  3. 排除规则.stignore
// .stignore - 微信数据排除规则
temp
cache
apm_record
*.lock
*.tmp
crash_report
log
  1. 数据库保护策略

    • 同步前确保微信已关闭(避免 db 锁定导致同步损坏文件)
    • 启用 Syncthing 的 Staggered File Versioning(阶梯式版本保留),保留最近 30 天的版本
    • 关键目录 db_storage 建议在微信运行时通过 .stignore 临时排除,关闭微信后恢复同步
  2. 同步触发优化

    • Syncthing 默认使用 fsnotify 实时监控,但微信关闭时会批量释放文件锁
    • 配置 rescanIntervalS 为 3005分钟全量扫描兜底
    • 可配合脚本在检测到微信关闭时手动触发 Syncthing API 重新扫描

Tip

微信只能单端PC登录的特性反而降低了双向同步的冲突风险。实际上是一种「跟随主力设备」的同步模式:你在哪台机器工作,新数据就从哪台流向另一台。


场景 BGit 项目仓库 → Syncthing双向实时

为什么选 Syncthing

  • 项目仓库需要双向同步(两台机器都可能编辑)
  • 实时文件监控,代码修改即同步
  • .stignore 可以排除 node_modulesbuild 等目录
  • 不破坏 .git 完整性

实现要点:

  1. 两端安装 SyncthingWindows 原生版本)
  2. 同步 Documents\IdeaProjects 整个目录
  3. 配置 .stignore 精确排除:
// .stignore 排除规则
node_modules
.gradle
build
dist
target
*.class
*.jar
*.pyc
__pycache__
.idea/workspace.xml
.idea/tasks.xml
.idea/usage.statistics.xml
.idea/shelf
*.iws
  1. 设置冲突处理策略:默认保留两个版本,手动解决
  2. 设置为 Windows 服务开机自启

Warning

Git 仓库同步注意事项:

  • 避免两端同时编辑同一文件,否则会产生冲突文件(*.sync-conflict-*
  • 建议在同一时间只在一端进行开发,另一端作为同步镜像
  • 如果需要真正的多端协作,应通过 Git remote如 GitHub/GitLabpush/pull而非文件同步

场景 C开发工具配置 → Syncthing + JetBrains Settings Sync

分层策略:

工具 同步方式 说明
IDEA / WebStorm 等 JetBrains Settings Sync 内置云同步,登录 JetBrains 账号即可
VS Code Settings Sync 内置,登录 GitHub/Microsoft 账号
其他散落配置 Syncthing 同步指定目录 %APPDATA% 下的特定子目录
Windows Terminal 配置 Syncthing settings.json 文件同步
SSH 配置 手动复制 ~/.ssh/config 一次性迁移

实现要点:

  1. IDEA 和 VS Code 优先使用内置的 Settings Sync最稳定、无兼容性问题
  2. 对于没有内置同步的工具,用 Syncthing 同步其配置目录
  3. SSH 配置、Git 全局配置等一次性手动复制

5. 部署顺序

阶段 内容 预计耗时
Phase 1 两端 WSL2 环境搭建 + SSH 免密配置(为 rsync 首次灌入做准备) 30 分钟
Phase 2 rsync 微信数据首次全量灌入(笔记本 → 台式机) 1-2 小时
Phase 3 两端安装 Syncthing + 配置三个共享文件夹(微信/Git/配置) 1 小时
Phase 4 Syncthing 首次索引建立 + 验证双向同步 30-60 分钟
Phase 5 开发工具内置 Settings Sync 启用IDEA/VSCode 15 分钟
Phase 6 Syncthing 设为 Windows 服务开机自启 + 监控脚本 30 分钟

6. 安全与容错

  1. 首次同步前全量备份:在台式机上先做一次完整的本地备份
  2. rsync 首次灌入使用 --dry-run:先预览,确认无误再执行
  3. Syncthing 版本控制:所有共享文件夹启用 Staggered File Versioning阶梯式版本保留
    • 最近 1 小时:保留所有版本
    • 最近 1 天:每小时保留一个版本
    • 最近 30 天:每天保留一个版本
  4. 微信数据库保护:同步脚本检测 Weixin.exe 进程,运行时临时跳过 db_storage 目录
  5. 日志审计Syncthing Web UI 自带同步日志,额外配置日志输出到文件
  6. 磁盘空间监控Syncthing 配置 minDiskFree 参数,磁盘空间不足时自动暂停同步
  7. 冲突文件清理:定期检查并清理 *.sync-conflict-* 文件

用户审阅结果(已确认

# 审阅项 用户确认
1 Git 仓库同步目录 Documents\IdeaProjects,无其他目录
2 台式机微信数据路径 C:\Users\wdd\xwechat_files
3 NAS / 外部存储 不考虑
4 台式机 WSL2 已安装完成
5 台式机磁盘空间 充足
6 采用方案 Syncthing 统一管控 + rsync 辅助首次灌入

Note

所有审阅项已确认,方案可以进入实施阶段。