-1

如何使用 SharpSsh 将文件从一个文件夹移动到远程服务器上的另一个文件夹?

我正在尝试将服务器上文件夹中的文件移动到另一个服务器文件夹。

我越来越:

错误:没有 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 客户端并发出命令让远程 shell 进行解释(如果您知道它是 linux,那么在 shell 中运行“mv”就可以了),或者,如果您没有 SSH 访问权限,您可以尝试使用支持“重命名”SFTP 命令的体面的 SFTP 客户端(例如我们的 SecureBlackbox)(远程文件可以通过这种方式“重命名”)。不过,并非所有服务器都支持此命令。

于 2015-11-08T09:23:09.657 回答