如何挂载 CIFS 共享以便它不会警告外部文件修改

如何挂载 CIFS 共享以便它不会警告外部文件修改

这是挂载的当前 fstab 条目。

//qnap/share /data  cifs noauto,user,username=qnap,uid=1000,gid=1000 0 0

这种方法运行良好并且大多数时候没有任何问题。

但是,当使用某些软件(例如:gedit 等基本文本编辑器或 PhpStorm 等更高级的应用程序)打开共享上的文件时,软件会不时报告“外部文件更改通知”。

文件时间戳或大小没有改变,并且此计算机和 NAS 都具有由 NTP 设置的相同时间。

有人知道是什么触发了诸如 gedit 之类的基本 Linux 文本编辑应用程序中的这些“外部文件更改”通知吗?

有人知道一些可以帮助解决这个问题的不同挂载标志吗?

我对修复很感兴趣,也对了解在较低级别上发生了什么以触发这些通知感兴趣。

谢谢,戴夫

答案1

在您fstab

//qnap/share /data  cifs username=qnap,password=<your_pass>,_netdev,uid=1000,gid=1000 0 0

在 的位置插入您的密码,并注意_netdev。对于 fstab 中的 cifs 挂载,始终建议使用 _netdev 选项。此开关会延迟挂载,直到启用网络为止,但排除此选项不会造成问题。

出现警告是因为您在挂载过程中没有提供密码。

已经描述了一种类似但略有不同的方法(凭证存储在文件中,文件在 fstab 中引用的方式)这里

编辑noauto如果您希望在登录而不是启动期间挂载,请使用(就像您所做的那样)。user并且sync选项也是可选的,请根据您的需要使用它们。

答案2

我在使用 Pluma (MATE Desktop 的 Gedit fork) 时遇到了同样的问题;这似乎是由于本地 GNU/Linux 机器 (纳秒) 和远程 Windows 机器 (FAT32 约为 2 秒) 之间的文件修改时间戳分辨率差异造成的。

当 Pluma 完成文件写入后,它会查询并记住文件的修改时间戳;在 CIFS 情况下,此信息会被缓存(因此会显示原始纳秒时间)。但随着时间流逝,缓存的属性过期,当 Pluma 再次尝试检查文件的时间戳以进行外部修改时,它会获取服务器端时间戳(即四舍五入到 2 秒分辨率);Pluma 将此解释为外部修改,并显示警告。

我通过阻止 CIFS 缓存文件属性解决了这个问题:actimeo=0在以下位置指定选项fstab

//qnap/share /data  cifs noauto,user,username=qnap,uid=1000,gid=1000,actimeo=0 0 0

所以当 Pluma 保存文件并读取时间戳时,它总是会获取已经四舍五入的服务端时间戳,从而不再给出烦人的消息。

相关内容