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

tra*_*eki 5 mount virtualbox files cifs

[我最初在 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 认为它可能已经过时了。

但我不确定......如果这是真的,我仍然不够精明来解决它。

建议?

Mic*_*pec 1

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

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

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