2017-10-04 3 views
1

SFTP用にSSH.NETライブラリを使用しています。私は同じサーバー上の2つのフォルダにファイルをアップロードする必要がありますが、ファイルは大きくなりますので、電線で2回送信しないでください。同じサーバー上の2つのSFTPフォルダに同時にC#からファイルをアップロードすることはできますか?

データがサーバー上にあると、1つのフォルダから次のフォルダにコピーするコマンドはありますか?または、同じデータの2つのコピーを電線に送信することなく、同時にアップロードすることができますか?

答えて

1

おそらくファイルを直接コピーすることはできません。詳細については、なぜ、以下を参照してください。
In an SFTP session is it possible to copy one remote file to another location on same remote SFTP server?

を使用すると、シェルアクセスを持っている場合、あなたはもちろん、シェルセッションを使用してcpコマンドを実行することができます。
は、参照してくださいSFTP経由でリモートのファイルを複製するHow to run commands on SSH server in C#?


ザ・唯一確実に作業方法は、ファイルをダウンロードして再アップロードすることです。

(一時的なローカルファイルを作成せずに)それを行うための最も簡単な方法は次のとおりです。

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); 
} 

しかし、私は、これはあなたが後にしているものではないことを認識してね。

1

Powershell FileSystemWatcherのようなものを使用して、いずれかのフォルダの変更を監視できます。その後、そのフォルダに新しいファイルが追加されると、アクション(たとえばRobocopy)をトリガーしてそのファイルを他のフォルダにコピーすることができます。

関連する問題