SSH.NET と C# を使用してリモート ファイルをコピーまたは移動する 質問する

SSH.NET と C# を使用してリモート ファイルをコピーまたは移動する 質問する

SSH.NET ライブラリのクラスを使用して SFTP サーバーにファイルをアップロードしたりダウンロードしたりできることはわかっていますSftpClientが、このクラスを使用して SFTP サーバー上のリモート ファイルをコピーまたは移動する方法がよくわかりません。また、インターネット上で関連資料も見つかりませんでした。SSH.NET ライブラリと C# を使用して、ディレクトリ A からディレクトリ B にリモート ファイルをコピーまたは移動するにはどうすればよいですか。

アップデート:また、以下のコードを使用してクラスを試してみましたSshClientが、エラーも例外も発生せず、何も起こりませんでした。

ConnectionInfo ConnNfo = new ConnectionInfo("FTPHost", 22, "FTPUser",
new AuthenticationMethod[]{

   // Pasword based Authentication
   new PasswordAuthenticationMethod("FTPUser","FTPPass")
   }                
   );

using (var ssh = new SshClient(ConnNfo))
{
    ssh.Connect();                
    if (ssh.IsConnected)
    {                    
         string comm = "pwd";
         using (var cmd = ssh.CreateCommand(comm))
         {
            var returned = cmd.Execute();
            var output = cmd.Result;
            var err = cmd.Error;
            var stat = cmd.ExitStatus;
         }
     }
   ssh.Disconnect();
}

Visual Studio コンソールでは、以下の出力が表示されます。

*SshNet.Logging Verbose: 1: サーバーにメッセージを送信します 'ChannelRequestMessage': 'SSH_MSG_CHANNEL_REQUEST: #152199'。

SshNet.Logging 詳細: 1: サーバーからの ReceiveMessage: 'ChannelFailureMessage': 'SSH_MSG_CHANNEL_FAILURE: #0'.*

ベストアンサー1

Renci による NuGet パッケージ SSH.NET では、以下を使用します。

using Renci.SshNet;
using Renci.SshNet.SftpClient;    

...

        SftpClient _sftp = new SftpClient(_host, _username, _password);

ファイルを移動するには:

        var inFile = _sftp.Get(inPath);
        inFile.MoveTo(outPath);

ファイルをコピーするには:

       var fsIn = _sftp.OpenRead(inPath);
       var fsOut = _sftp.OpenWrite(outPath);

        int data;
        while ((data = fsIn.ReadByte()) != -1)
            fsOut.WriteByte((byte)data);

        fsOut.Flush();
        fsIn.Close();
        fsOut.Close();

おすすめ記事