系统版本:
X86
设备环境:
物理机,局域网访问,fnOS v1.1.x(最新版本),Windows 11 客户端通过 SMB 映射网络驱动器访问
BUG现象:
开启文件快照功能后,在 Windows 资源管理器中右键共享文件夹 → 属性 → "以前的版本"标签页存在但内容为空,无法显示任何快照历史版本。
根因定位:
排查发现 Samba 共享配置文件 /etc/samba/users/1000.share.conf 中 shadow:format 与快照实际目录命名格式不匹配:
- smb.conf 中配置为:
shadow:format = GMT%z-%Y.%m.%d-%H.%M.%S
- 实际快照应用trim-snapshots 实际创建的快照目录名为:
UTC+08-2026.06.11-00.00.00
两处不一致:
- 前缀不同:配置写的是
GMT,快照实际用的是 UTC
- 时区格式不同:
%z 输出为 +0800(四位),快照实际为 +08(两位)
导致 Samba shadow_copy2 模块枚举快照时无法匹配任何目录,Windows 端收到空列表。
手动验证修复:
将 shadow:format 修改为 UTC+08-%Y.%m.%d-%H.%M.%S 后,重启 Samba 服务,Windows "以前的版本"立即恢复正常,可以看到所有快照时间点。
但系统会在设置变更时自动重新更新/etc/samba/users/1000.share.conf配置文件,手动修改会被覆盖还原为错误的 GMT%z 格式,问题复发。
建议修复方案:
将 share.conf 模板中的 shadow:format 从 GMT%z-%Y.%m.%d-%H.%M.%S 改为与 trim-snapshots 实际输出一致的 UTC+08-%Y.%m.%d-%H.%M.%S(根据系统时区动态生成前缀),使 Windows Previous Versions 功能正常工作。