-1

SharpSsh を使用して、リモート サーバー上のあるフォルダーから別のフォルダーにファイルを移動する方法は?

サーバー上のフォルダーにあるファイルを別のサーバー フォルダーに移動しようとしています。

私は得ています:

ERROR: No se pudo encontrar el archivo '/local/opt/oracle/oradata/UTL_DIR/PEDIMENTOS/pedimento.csv'.

ファイル「/local/opt/oracle/oradata/UTL_DIR/PEDIMENTOS/pedimento.csv」が見つかりません

これは私のコードです:

Tamir.SharpSsh.Sftp ClientSFTP = new Tamir.SharpSsh.Sftp(pHost, pUserName, pPassword);
try
{
    string FechaActual = DateTime.Today.ToString("yyyyMMdd");
    string pFilePEDIMENTOS = "/local/opt/oracle/oradata/UTL_DIR/PEDIMENTOS/pedimento.csv";
    string pFilePROCESADO = "/local/opt/oracle/oradata/UTL_DIR/PEDIMENTOS/PROCESADO/pedimento" + FechaActual + ".csv";

    //Abre sesion
    ClientSFTP.Connect();
   
    if (ClientSFTP.Connected)
    {
        // ejecutar el comando
        ClientSFTP.Put(pFilePEDIMENTOS, pFilePROCESADO);//SEGUIR INVESTIGANDO
    }
    else
    {
        throw new Exception("Error de Conexion con el Servidor Remoto");
    }
}
catch (Exception ex)
{
    lblError.Text = ex.Message;
}
finally
{
    //cerrar conexion SFTP
    ClientSFTP.Close();
}
4

2 に答える 2

0

まず、SharpSSH を使用しないでください。これはデッド プロジェクトです。

別の SFTP 実装を使用してください。.NET 用の SFTP ライブラリ を参照してください。


とにかく、(非常に正当な理由で) 使用する必要がある場合は、SftpChannel.renameメソッドを使用してください。

Sftpメソッドを公開しないため、クラスを使用することはできません。

例を参照してくださいjsch\examples\Sftp.cs。単純化されたコードは次のようになります。

Session session=jsch.getSession(pUserName, pHost, 22);
...
session.connect();
...
Channel channel=session.openChannel("sftp");
ChannelSftp c=(ChannelSftp)channel;
...
c.rename(pFilePEDIMENTOS, pFilePROCESADO);

「名前変更」も「移動」も基本的には同じ操作です。.Putは、ローカル ファイルをリモート ロケーションにアップロードするためのものです。

于 2015-11-09T07:51:39.140 に答える
0

あなたが使用する Put メソッドは、ファイルをローカル コンピューター (クライアント) からリモート サーバーに転送することだと思います。この方法は、リモート サーバー上のファイルの移動には適していません。

ファイルを移動するには、SSH クライアントを使用し、リモート シェルが解釈するコマンドを発行する必要があります (Linux であることがわかっている場合は、シェルで "mv" を実行するとジョブが実行されます)。または、SSH アクセスがない場合は、次のことができます。 "Rename" SFTP コマンドをサポートする適切な SFTP クライアント (SecureBlackbox など) を使用してみてください (この方法でリモート ファイルを "名前変更" できます)。ただし、すべてのサーバーがこのコマンドをサポートしているわけではありません。

于 2015-11-08T09:23:09.657 に答える