2015-11-07 65 views
-1

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

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

我越来越:

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

Cannot find file '/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(); 
} 
+0

你会得到任何错误? –

+0

错误:无法访问encontrar el archivo'/local/opt/oracle/oradata/UTL_DIR/PEDIMENTOS/pedimento.csv'。 –

+0

确保该文件存在于该位置,并且您的本地文件夹和目标文件夹的所有权限都已正确设置 –

回答

0

首先,不要使用SharpSSH,这是一个死的项目。

使用另一个SFTP实现。见SFTP Libraries for .NET


无论如何,如果你必须使用它(对于一个很好的理由),使用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用于将本地文件上传到远程位置。

0

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

要移动文件,您需要使用SSH客户端并为远程shell发布命令来解释(如果您知道它是linux,那么在shell中运行“mv”将执行该任务),或者,如果您没有SSH访问,您可以尝试使用支持“重命名”SFTP命令(可通过这种方式“重命名远程文件”)的体面的SFTP客户端(例如我们的SecureBlackbox)。不过,并非所有服务器都支持这个命令。