Доступ к файловой системе Linux в программе на C # - PullRequest
2 голосов
/ 29 июля 2010

Я программирую приложение на C #, которое проверяет время последнего изменения файла на 3 разных серверах, одним из которых является linux. Будучи другой файловой системой, каковы возможные способы проверить, когда указанный файл был последний раз изменен в системе.

У меня есть полный доступ к некоторой модификации сервера, но я ищу ряд креативных решений, чтобы обойти эту проблему.

Заранее спасибо

Ответы [ 3 ]

2 голосов
/ 29 июля 2010

Вы можете использовать статические методы классов System.IO.File для получения необходимой информации:

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

Это должно работать и для файлов, которыми ваш Linux-сервер поделился через samba. Также вы можете запустить этот .Net-код с помощью mono на компьютере с Linux, но, похоже, не все файловые системы Linux правильно поддерживают все перечисленные выше методы .

Обновление:

Вы можете использовать ftp и опросить его вместо общего сетевого ресурса. Чтобы получить доступ к дате и времени, вы можете отправить ftp-веб-запрос с WebRequestMethods.Ftp.GetDateTimestamp на сервер.

Но, возможно, я неправильно понял ваши требования: вам нужно проверять файлы с одного компьютера на 3? Или эти 3 машины должны проверять свои файлы независимо друг от друга? Результаты должны быть собраны одной "службой"? Или результаты относятся только к одной машине, к которой принадлежит файл?

1 голос
/ 29 июля 2010

Самое простое, если ваше приложение будет запускаться в окне Windows, - это запустить и настроить SAMBA в окне Linux и использовать его для предоставления папок Linux, общих для сети, используя SMB.

Это позволит вам получить доступ к папке linux так же, как и к любому другому сетевому ресурсу Windows.

Другие варианты - использовать NFS на коробке linux и использоватьNFS-клиент (см. этот ТАК вопрос), или попробуйте моно прямо на linux box.

0 голосов
/ 29 июля 2010

Для Linux наиболее очевидным решением является SFTP.Большинство дистрибутивов Linux имеют встроенный SSH / SFTP-сервер и работают по умолчанию.Теперь протокол SFTP предоставляет стандартный формат списка для каталогов, так что вы можете получить список и прочитать там время файла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...