是否可以通过C#将文件上传到同一服务器上的两个SFTP文件夹?

是否可以通过C#将文件上传到同一服务器上的两个SFTP文件夹?

问题描述:

我使用SF.NET的SSH.NET库。我需要将文件上传到同一服务器上的两个文件夹中,但该文件会很大,所以我宁愿不要通过电线两次发送它。是否可以通过C#将文件上传到同一服务器上的两个SFTP文件夹?

一旦数据在服务器上,是否有从一个文件夹复制到下一个文件夹的命令?或者可能同时上传,而不必通过电汇发送相同数据的两个副本?

您可能无法直接复制文件。有关详细信息,为什么,请参阅:
In an SFTP session is it possible to copy one remote file to another location on same remote SFTP server?

如果你有shell访问,当然你也可以使用shell会话中执行cp命令。
How to run commands on SSH server in C#?


唯一可靠的工作方式复制远程文件在SFTP是下载并重新上传文件。

做到这一点(不创建一个临时的本地文件)最简单的方法是:

SftpClient client = new SftpClient("example.com", "username", "password"); 
client.Connect(); 

using (Stream sourceStream = client.OpenRead("/source/path/file.dat")) 
using (Stream destStream = client.Create("/dest/path/file.dat")) 
{ 
    sourceStream.CopyTo(destStream); 
} 

但我知道,这是不是你所追求的。

您可以使用类似Powershell FileSystemWatcher的东西来监视您的某个文件夹中的更改。然后,一旦有新文件添加到该文件夹​​,就可以触发一个操作(例如Robocopy)并将该文件复制到另一个文件夹中。