我正在使用SSH.NET库进行SFTP。我需要将文件上传到同一服务器上的两个文件夹中,但是文件会很大,所以我宁愿不通过网络发送两次。
一旦数据在服务器上,是否有命令从一个文件夹复制到下一个文件夹?或者也许同时上传而不必通过网络发送相同数据的两个副本?
答案 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);
}
但我知道这不是你想要的。