编辑 cifs/Samba 文件时抑制/绕过“文件已更改”错误

编辑 cifs/Samba 文件时抑制/绕过“文件已更改”错误

[我最初在 vi/vim stackexchange 上发布了有关此问题的文章,但越来越明显的是,核心问题更多的是文件系统,而不是抱怨它的编辑器]

TL;DR —— CIFS 挂载上的文件在后台“发生变化”,当我尝试写入这些文件时,Vim 会发出警报。我需要帮助让 Vim 平静下来或消除潜在的“修改”噪音。

背景:

  • 我有一个 Linux 来宾虚拟机(Arch/Manjaro-i3 64 位)在 Windows 10 主机下的 VirtualBox 上运行。
  • 主机有一个格式化为 NTFS 的分区,旨在在两者之间共享。
  • 共享分区通过标准 Windows 10 共享进行共享,并作为 /etc/fstab 中的 cifs 驱动器安装在 Linux 客户机上。
  • 我正在使用 vim 8.1 从来宾系统编辑文件。

问题:

  • 大多数时候(显然是随机的)我尝试:写一个我在 vim 中编辑的文件,我得到
警告:该文件自阅读后已被更改!
  • 我知道两次写入之间磁盘上的内容没有改变。

我想防止虚假警告,并更好地了解如何检查其来源。

基本上,在我将文件写入磁盘后,就会立即触发对该文件的修改。我怀疑 Samba 基础设施,但我不确定如何确定这一点。我查看过 strace 日志,但我不太擅长理解这些数据。

怀疑问题是 vim 认为它为文件添加时间戳和 Samba 最终看到写操作时记录的时间戳之间存在一些延迟,因此 vim 认为它可能已过期。

但我不确定……如果这是真的,我仍然没有足够的悟性来解决它。

建议?

答案1

我建议关闭该磁盘的 Windows 自动磁盘优化器。 Linux 在记录日志时会查看磁盘上的位置,而 Windows 则不会。所以即使它的位置改变了一点点,对于 Linux 来说它已经不一样了。

那应该可以解决你的问题!

https://www.top-password.com/blog/disable-automatic-drive-optimization-defrag-in-windows-10/

相关内容