如何使用SharpSsh和C#在远程服务器上将文件从一个文件夹移动到另一个文件夹
本文关键字:文件夹 一个 另一个 移动 文件 SharpSsh 何使用 服务器 | 更新日期: 2023-09-27 18:21:10
如何使用SharpSsh将文件从远程服务器上的一个文件夹移动到另一个文件夹?
我正在尝试将服务器上某个文件夹中的文件移动到另一个服务器文件夹中。
我得到:
错误:没有se pudo encontrar el archivo'/local/opt/oracle/oradata/UTL_DIR/PEDIMENTOS/pediento.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();
}
首先,不要使用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
用于将本地文件上传到远程位置。
我假设您使用的Put方法是将文件从本地计算机(客户端)传输到远程服务器。该方法不适合在远程服务器上移动文件。
要移动文件,您需要使用SSH客户端并发出命令让远程shell进行解释(如果您知道它是linux,那么在shell中运行"mv"就可以了),或者,如果您没有SSH访问权限,您可以尝试使用一个支持"重命名"SFTP命令的像样的SFTP客户端(如我们的SecureBlacbox)(远程文件可以通过这种方式"重命名")。不过,并非所有服务器都支持此命令。