Я загружаю 4000 ZIP-архивов размером 85 КБ каждого из них, используя Linux-сервер, используя SFTP в приложении C# WPF. Весь этот процесс занимает 30 минут.Передача большого количества файлов с использованием SFTP происходит медленно в C#
Есть ли способ ускорить загрузку с помощью SFTP?
Я использую WinSCP сборки .NET:
https://winscp.net/eng/docs/library
Я также использовал Чилкэт ранее.
Вот мой код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using WinSCP;
namespace SFTP_Demo
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
string line;
SessionOptions sessionoptions = new SessionOptions()
{
Protocol = WinSCP.Protocol.Sftp,
HostName = "172.168.1.7",
PortNumber = 22,
UserName = "lduser",
Password = "lduser",
GiveUpSecurityAndAcceptAnySshHostKey = true
};
using (Session session = new Session())
{
session.Open(sessionoptions);
TransferOptions transferOptions = new TransferOptions();
transferOptions.TransferMode = TransferMode.Binary;
TransferOperationResult transferResult;
System.IO.StreamReader file = new System.IO.StreamReader(txtFile.Text);
while ((line = file.ReadLine()) != null)
{
transferResult = session.PutFiles(@"D:\Test\signature\ldoutput\"+line, "/SFTP/", false, transferOptions);
transferResult.Check();
counter++;
strbldr = strbldr.AppendLine(string.Format("{0} Upload of {1} succeeded", counter + 1.ToString(), line));
}
}
}
}
}
Как насчет того, чтобы застегнуть их все в один, передать, а затем распаковать на сервере? – Evk
@ Evk Я пробовал это, и он занимает 3 минуты только для передачи этих файлов, но как можно распаковать файлы, расположенные над сервером с моего локального компьютера. – dhiraj
Если у вас есть доступ к ssh, вы можете сделать это, используя, например, https: // sshnet.codeplex.com/ library (или любой другой). Если у вас нет доступа к ssh или вы не хотите его использовать, возможно, ваш код может быть улучшен, но не уверен. Но сначала проверьте простые параметры. – Evk