Есть ли способ получить файлы только в диапазоне дат по FTP?

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

Есть ли способ, скажем, с помощью SSH.NET или WinSCP, сделать этот процесс только с файлами за последние две недели?


person djbyter    schedule 28.05.2020    source источник
comment
Немного неясно, хотите ли вы использовать SFTP или FTP. В любом случае WinSCP поддерживает оба варианта.   -  person Martin Prikryl    schedule 28.05.2020


Ответы (1)


Я бы использовал FluentFTP

using FluentFTP;
using System.Linq;

.
.
.

DateTime min = ...;
DateTime max = ...;

using (var conn = new FtpClient("address", "user", "password"))
{
    conn.Connect();

    var files = conn
        .GetListing("/path", FtpListOption.Recursive)
        .Where(item => item.Type == FtpFileSystemObjectType.File
                    && item.Modified >= min
                    && item.Modified <= max);

    foreach(var file in files)
    {
        ...
    }
}

Вы можете использовать Created вместо Modified

person opekope2    schedule 28.05.2020
comment
Хотя OP действительно немного непоследователен в отношении использования терминов SFTP и FTP, я считаю, что он действительно хочет использовать SFTP, а не FTP. Так что FluentFTP не поможет. - person Martin Prikryl; 28.05.2020