在C#程序中访问Linux文件系统

我正在编程一个C#应用程序,它检查上次在3个不同的服务器上修改文件,其中一个是linux。 作为一个不同的文件系统什么是可能的方法来检查系统上次修改文件的时间。

我完全有权修改服务器的范围,但我正在寻找一些创造性的解决scheme来解决这个问题。

提前致谢

最简单的事情,如果你的应用程序将运行在一个窗口框是运行和配置SAMBA的Linux机器上,并使用它来公开使用SMB网络共享的Linux文件夹。

这将允许您以访问任何其他Windows网络共享的相同方式访问Linux文件夹。

其他选项是在Linux上使用NFS并使用NFS客户端(请参阅此问题),或直接在Linux机器上尝试单声道。

您可以使用System.IO.File类的静态方法来获取所需的信息:

  DateTime written = File.GetLastWriteTime(fileName); DateTime accessed = File.GetLastAccessTime(fileName); DateTime created = File.GetCreationTime(fileName); 

这应该适用于您的Linux服务器通过samba共享的文件。 你也可以在linux机器上用单声道运行这个.Net代码 – 但是似乎并不是所有的linux文件系统都能正确地支持上述所有的方法 。

更新:

您可以使用ftp和poll来代替网络共享。 要访问日期时间,您可以使用WebRequestMethods.Ftp.GetDateTimestamp向服务器发送一个ftp-webrequest。

但是也许我的要求是错的:你需要从3台机器上的一台机器上检查文件吗? 还是应该这3台机器彼此独立检查文件? 结果是否意味着由一个“服务”收集? 还是只有文件属于一台机器的结果?

对于linux而言,最明显的解决方案是SFTP。 大多数Linux发行版默认都内置并运行SSH / SFTP服务器。 现在,SFTP协议为目录提供了一个标准的列表格式,以便您可以在那里获取列表并读取文件时间。