Samba 的 FileSystemWatcher 行为不正确

发布于 2024-08-02 00:17:19 字数 186 浏览 5 评论 0原文

我在 Windows 服务器上使用 .NET FileSystemWatcher 来监视 Windows 服务器上的文件夹。 我还可以使用 Samba 从 Linux 服务器访问同一文件夹。 如果我将文件从监视的文件夹复制到其他位置,则会为源文件生成更改事件。 这种行为正确吗? 它似乎更改了文件的“上次访问”时间。 我怎么能忽略这种类型的变化呢?

I am using a .NET FileSystemWatcher on a Windows server to watch a folder on a Windows server.
I also have access to the same folder from a Linux server using Samba.
If I copy a file from the watched folder to somewhere else, a change event is generated for the source file.
Is this behaviour correct? It seems to change the 'last accessed' time on the file. How can I ignore this type of change?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

深爱不及久伴 2024-08-09 00:17:19

Windows 程序设置的“上次访问”时间不一致:例如,在 Windows 中显示文件属性上下文菜单将重置该时间。 正如您所说,Windows 复制不会设置“上次访问”时间,但使用 Samba 的 Windows 服务器上的文件副本会设置“上次访问”时间,因为 Samba 的内部驱动程序会执行复制。

我担心,您唯一的解决方法是使用 FileSystemWatcher:

FileSystemWatcher watcher = new FileSystemWatcher();
watcher.Path = "c:\yourpathhere";
watcher.NotifyFilter = NotifyFilters.LastWrite 
   | NotifyFilters.FileName | NotifyFilters.DirectoryName;

或类似的过滤器来忽略“上次访问”时间。

The "last accessed" time is inconsistently set by Windows programs: for instance, displaying the file properties context menu in Windows will reset this time. As you state, Windows Copy does not set the "last access" time, but a copy of a file on a Windows server using Samba does as it's Samba's internal drivers doing the copy.

Your only workaround, I fear, is to ignore the "last access" time using a filter in your FileSystemWatcher:

FileSystemWatcher watcher = new FileSystemWatcher();
watcher.Path = "c:\yourpathhere";
watcher.NotifyFilter = NotifyFilters.LastWrite 
   | NotifyFilters.FileName | NotifyFilters.DirectoryName;

or similar.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文