繁体   English   中英

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

[英]How to move a file from one folder to another folder on a remote server using SharpSsh and C#

如何使用 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();
}

我假设您使用的 Put 方法是将文件从本地计算机(客户端)传输到远程服务器。 该方法不适用于在远程服务器上移动文件。

要移动文件,您需要使用 SSH 客户端并向远程 shell 发出命令以进行解释(如果您知道它是 linux,则在 shell 中运行“mv”即可完成这项工作),或者,如果您没有 SSH 访问权限,则可以尝试使用支持“重命名”SFTP 命令的体面的 SFTP 客户端(例如我们的 SecureBlackbox)(远程文件可以通过这种方式“重命名”)。 不过,并非所有服务器都支持此命令。

首先,不要使用 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用于将本地文件上传到远程位置。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM