Загрузить файл на основе даты, измененной из 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 не позволяет указать маску файла для операции. Обработка маски, которую вы передаете, в любом случае выполняется на стороне клиента. Таким образом, вы можете только перечислить все файлы, затем просмотреть список и выбрать нужные файлы по определенным критериям.

Другие вопросы по тегам