Загрузить файл на основе даты, измененной из SFTP
Есть ли способ получить файлы с SFTP-сервера, которые должны основываться на дате изменения, используя Tamir.SharpSsh? В настоящее время я загружаю файлы по имени файла, но мое требование - по дате изменения.
var sftp = new Sftp(Host, UserName, Password);
sftp.Connect();
sftp.Get(sourcePath+"/*.*." + name + "*", destinationPath);
2 ответа
SharpSsh не позволяет этого. Это мертвый проект, не используйте его.
Во всяком случае, я взглянул на код, чтобы оценить, насколько сложно было бы добавить возможность извлекать временную метку файла, используя Sftp.GetFileList
(так как библиотека с открытым исходным кодом).
Вы должны были бы:
- Добавьте поле метки времени в
ChannelSftp.LsEntry
- Добавьте разбор отметки времени из
SSH_FXP_NAME
пакет кChannelSftp.ls
метод - Изменить (или добавить альтернативу)
Sftp.GetFileList
возвращать не только имя файла, но и метку времени (и другие метаданные файла).
В качестве альтернативы вы можете использовать WinSCP .NET сборки. Вы можете использовать его Session.GetFiles
метод с маской файла. Например, маска файла *>7D
Выбирает все файлы, измененные за последнюю неделю.
(Я автор WinSCP)
Протокол SFTP не позволяет указать маску файла для операции. Обработка маски, которую вы передаете, в любом случае выполняется на стороне клиента. Таким образом, вы можете только перечислить все файлы, затем просмотреть список и выбрать нужные файлы по определенным критериям.