2014-08-28 4 views
3

Есть ли способ получить файлы с SFTP-сервера, которые должны быть основаны на модифицированной дате с использованием Tamir.SharpSsh? В настоящее время я загружаю файлы по имени файла, но мое требование - по дате.Загрузить файл на основе даты, измененной с помощью SFTP

var sftp = new Sftp(Host, UserName, Password); 
sftp.Connect(); 
sftp.Get(sourcePath+"/*.*." + name + "*", destinationPath); 
+0

Я не думаю, что вы можете скачать этот путь. Единственное, что я новичок, это получить все файлы, перечисленные в sftp, но детали этого файла, я так не думаю. –

+0

Да, я знаю, что мы получаем список файлов из определенного каталога. Я хочу, чтобы мне нужно было указать файлы на основе измененной даты. – Sudha

ответ

4

SharpSsh этого не допускает. Это мертвый проект, не используйте его.

Во всяком случае, я взглянул на код, чтобы оценить, насколько сложно было бы добавить возможность получить временную метку файла, используя Sftp.GetFileList (так как библиотека имеет открытый исходный код).

Вы бы:

  • Добавьте поле временной метки к ChannelSftp.LsEntry
  • Добавить разбор из метки времени из SSH_FXP_NAME пакета в ChannelSftp.ls метод
  • Modify (или добавить альтернативу) Sftp.GetFileList для возврата не только имени файла, но и метки времени (и других метаданных файла).

В качестве альтернативы, вы можете использовать WinSCP .NET assembly. Вы можете использовать его Session.GetFiles method с file mask. Например. a file mask *>7D selects all files modified in the last week.

(я автор WinSCP)

0

Протокол SFTP не позволяет указать маску файла для операции. Обработка пройденной маски выполняется на стороне клиента. Таким образом, вы можете только перечислить все файлы, затем пройти список и выбрать нужные вам файлы по определенным критериям.

+3

Проблема с SharpSSh заключается в том, что она не позволяет вам получить какой-либо атрибут файла. –