我有一个在本地网络上共享的硬盘。用户数量很少,不到 5 个。该驱动器是从 Windows(Windows 11)共享的,但需要由 macOS(Big Sur +)和 Windows(Windows 10/11)访问。
我的问题是我不想让两个用户不知不觉地打开同一个文件,编辑它,然后尝试保存他们的更改,覆盖一个用户的工作。根据我的实验(使用纯文本文件),如果文件已经在另一台计算机上打开,则 Windows 和 macOS 都不会在打开文件时警告用户。MacOS 在保存已在另一台计算机上更改的文件之前会发出警告,但 Windows 不会。
我希望启用以下功能之一:
- 在 Windows 上,保存文件之前会显示警告,提示该文件自打开后已被外部更改。
- 或者,理想情况下,打开文件时会发出警告,提示该文件已在另一台计算机(macOS 和 Windows)上打开。
可以同时执行其中一项或两项吗?可以针对整个共享驱动器的所有文件执行这些操作吗?
我愿意接受涉及常规设置、命令行、脚本甚至第三方软件的解决方案。(我不寻求任何基于云的解决方案,因为此网络需要完全离线运行。)
答案1
数据库和源代码管理中也存在同样的问题:当两个用户试图同时更改同一数据时会发生什么?也许你可以使用源代码管理工具使用户能够锁定要编辑的文件(悲观并发控制),或者使用乐观并发控制,它“允许多个用户尝试更新同一个[文件]”。在第二种情况下,管理工具必须能够比较同时进行的更改,并解决差异,无需用户干预(例如,对文档的完全不同部分进行更改),或者在许多情况下,由用户审阅更改并接受或修改一些更改。
我的个人经验是悲观(锁定)控制更容易实现,并且引起的冲突更少,但是,如果许多用户想要编辑同一个文档,等待锁定释放可能会很麻烦。
Apache Subversion(SVN)是一款免费的开源版本控制和修订控制系统,您可以尝试一下,客户端适用于 macOS、Linux 和 Windows。众多选择,也一样。