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

时间:2017-10-04 21:19:28

标签: c# .net sftp ssh.net

我正在使用SSH.NET库进行SFTP。我需要将文件上传到同一服务器上的两个文件夹中,但是文件会很大,所以我宁愿不通过网络发送两次。

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

您可能无法直接复制文件。详情请见:
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);
}

但我知道这不是你想要的。