[英]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.