云盘同步冲突处理 —— Cryptomator 自动把冲突后缀应用到解密文件名
同步冲突是怎么产生的
云盘同步冲突的典型场景:
- 两台设备同时解锁同一个保险库(比如桌面和手机)
- 两台设备各自修改了同一个文件(桌面改了 budget.xlsx 的第 3 行,手机改了第 5 行)
- 两台设备 Lock 之后,云盘客户端会检测到两边产生了两个不同版本的密文文件
- 云盘客户端无法判断哪个是正确版本(因为两边都改了),就创建一个带冲突后缀的副本:
// 云盘密文目录里出现了两个文件:
5TyvCyF255sRtfrIv...83ucADQ==.c9r ← 原始版本
5TyvCyF255sRtfrIv...83ucADQ== (Created by Alice).c9r ← 带冲突后缀的副本
Cryptomator 解锁保险库时检测到这个冲突,自动把冲突后缀应用到解密后的明文文件名上。
解锁视图里长什么样
云盘那个密文文件带了 (Created by Alice) 后缀。Cryptomator 会:
- 识别出这个后缀是云盘的冲突标记,不是文件名的一部分
- 把主文件名
5TyvCyF255sRtfrIv...83ucADQ==解密回明文名(比如budget.xlsx) - 把冲突后缀
(Created by Alice)应用到明文文件名后面 - 处理后的明文名:
budget (Created by Alice).xlsx
解锁后的虚拟盘里你会看到:
├─ budget.xlsx ← 原始版本(没被另一台设备改过)
├─ budget (Created by Alice).xlsx ← 冲突副本
两个文件同时存在、同时可见。你能直接对比内容、决定留哪个、或者合并内容。
冲突后缀可能是什么
云盘的冲突标记格式不是 Cryptomator 定的——是各云盘自己的:
| 云盘 | 典型冲突后缀 |
|---|---|
| Dropbox | (John's conflicted copy 2024-01-31) |
| Google Drive | (Created by Alice on 2024-01-31) |
| OneDrive | (计算机名 的冲突副本 2024年1月31日) |
| Nextcloud | 取决于 Nextcloud 配置 |
Cryptomator 不管云盘用什么格式——只要检测到密文文件名里有"多余的冲突后缀",就会保留并应用到解密后的明文文件名里。
特殊情况:文件名长度不够
如果云盘的冲突后缀特别长(比如 OneDrive 中文的冲突标记),加上后缀后的解密文件名可能超出短名阈值。这时候 Cryptomator 会:
- 触发短名机制
- 短名阈值默认 220,可以在创建保险库时调整
特殊情况:冲突后缀冲突
如果你创建的明文文件本身就叫 budget (Created by Alice).xlsx——然后云盘又产生了一个带同样后缀的冲突副本——Cryptomator 会给冲突副本再加一个 (1)、(2) 这样的数字后缀:
├─ budget (Created by Alice).xlsx ← 你自己起的名字
├─ budget (Created by Alice) (1).xlsx ← 云盘产生的冲突副本
怎么解决冲突
Cryptomator 不会自动合并冲突文件——这是你作为文件所有者的职责。典型流程:
- 解锁保险库
- 在虚拟盘里找到冲突的两个文件(带后缀的那个就是冲突副本)
- 对比内容:
- 两个文件内容完全一样 → 删掉其中一个(保留原始版本,删冲突副本)
- 两个文件内容有差异(两边都改了)→ 打开两个文件 → 手动合并内容到其中一个 → 删掉另一个
- 其中一个文件内容明显是错的 → 直接删掉那个
- 删完之后 Lock 保险库
- 等云盘同步完删除(确保云盘上也只剩一个文件)
怎么避免冲突
最根本的办法:同一时间只让一台设备解锁保险库。用完 Lock 保险库、等云盘同步完、再换另一台设备。
如果你经常需要多端同时工作,可以考虑:
- 给每个保险库划分使用权限:比如"个人保险库只在家用电脑解锁,工作保险库只在公司电脑解锁"
- 用不同的保险库存不同用途的文件,减少同时修改同一文件的概率
- 用版本历史功能(见 备份与旧版本恢复)作为最后一道防线
其他同步异常
| 场景 | 表现 | 解法 |
|---|---|---|
| 云盘部分上传成功 | 密文文件在云盘上存在但不完整 | 重同步,或用云盘版本历史恢复旧版本 |
| 云盘同步被中断 | 中间状态的密文文件留在云盘 | 保险库解锁一次让 Cryptomator 检测并提示 |
| 保险库目录被手动修改 | 比如手动在密文目录里加了一个新文件 | Cryptomator 会检测到未知文件,解锁时可能报错 |
所有这些异常的第一原则:先解锁保险库 → 让 Cryptomator 完整扫描一遍 → 看它提示什么 → 按提示处理。