我有一个带有 C# 控制台应用程序的 20 GB 服务器,还有一个 sftp 服务器,
所以基本上我想通过获取部件并在用下一个部件覆盖它们之前发送 dem 来通过 20 Gb 服务器传输 70 Gb 文件
我使用了一个名为 SshNet 或 Renci.SshNet 的库,它们没有提供从 sftp 服务器获取部分文件的功能
我找不到任何提供该功能的教程或库
我尝试了几个库,但没有一个起作用,我真的需要一个解决方案,但我在网上找不到一个
我尝试过:
我不知道如何使用按月订阅的付费解决方案。
SSH.NET 和 WinSCP 都有用于流式传输文件内容的 API:
SftpClient.Open
(SftpClient.OpenRead
,SftpClient.OpenWrite
)返回SftpFileStream
(Stream
的实现)。 SSH.NET流实现支持查找,因此您可以用它实现文件部分的下载。但这通常是一个次优的解决方案。见下文。Session.GetFile
返回Stream
。 WinSCP流不支持查找,因此无法使用它来实现文件部分的下载。但在大多数情况下你不需要它。而是将数据直接流式传输到另一端。我们无法帮助您进行流式传输,因为您没有告诉我们有关另一端的任何信息。无论如何,例如,如果另一端也是 SFTP,则使用 WinSCP 你可以这样做:
using (var sourceStream = sourceSession.GetFile("/remote/source/path"))
{
destinationSession.PutFile("/remote/destination/path", sourceStream);
}
与 SSH.NET 类似:
using (var sourceStream = sourceSftpClient.OpenRead("/remote/source/path"))
using (var destinationStream = destinationSftpClient.OpenWrite("/remote/destination/path"))
{
sourceStream.CopyTo(destinationStream);
}