是否可以通过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)并将该文件复制到另一个文件夹中。