[英]Explaining path used in SFTP file transfer using JSch
public static void sftpFile( String localDir,
String localFileName,
String localAbsoluteFileName,
String targetHost,
int targetPort,
String targetDir,
String identityFile,
String targetUserId,
String targetPassword) throws ErrorCodeException
{
Session session = null;
ChannelSftp sftpChannel = null;
JSch jsch = new JSch();
try
{
session = jsch.getSession( targetUserId, targetHost, targetPort );
session.setConfig( "StrictHostKeyChecking", "no" );
if( identityFile != null )
{
jsch.addIdentity( identityFile );
}
if( targetPassword != null )
{
session.setPassword( targetPassword );
}
session.connect();
Channel channel = session.openChannel( "sftp" );
channel.connect();
sftpChannel = (ChannelSftp) channel;
sftpChannel.cd( targetDir );
sftpChannel.lcd( localDir );
sftpChannel.get( localAbsoluteFileName, "." );
if( log.isTraceEnabled() )
{
log.trace( tracePrefix + localFileName + ": Done SFTP" );
}
}
catch( Exception e )
{
System.out.println( "Error connecting to target host." );
throw new ErrorCodeException(ErrorCode.COMMUNICATION_FAILURE);
}
finally
{
if ( sftpChannel != null )
{
sftpChannel.exit();
}
if ( session != null )
{
session.disconnect();
}
}
}
我对以下术语没有清晰的认识
我想将文件test.csv
从服务器传输到客户端,从客户端打开SFTP通道。
文件位于服务器“ 10.10.20.30”中的以下位置
/ram/server/files/test.csv
需要复制到客户端“ 10.10.20.40”中的以下位置
/ram/client/files
什么是localDir
, targetDir
, localFileName
, localAbsoluteFileName
以及以下步骤的作用
sftpChannel.cd( targetDir );
sftpChannel.lcd( localDir );
localDir
本地工作目录。 该代码使用相对的目标路径( .
),该路径相对于本地工作目录进行解析。 由于相对路径是“此路径”(点),因此可以有效地将文件下载到localDir
。 您应该将其设置为/ram/client/files
。 targetDir
远程工作目录。 如果localAbsoluteFileName
确实是绝对的,则远程工作目录无关。 删除使用( .cd
调用),或者,如果您不想更改实现,请将其设置为/ram/server/files
(或您可以访问的任何其他路径)。 尽管使用了名称(“目标”),但如果使用了它,它实际上将是源目录。 localFileName
仅用于记录。 localAbsoluteFileName
尽管名称中为“ local”,但它仍用作要下载的远程文件的源路径。 您应该将此设置为/ram/server/files/test.csv
。 通常,参数的命名似乎是错误的。 似乎有人在上载代码,将其更改为下载代码(用.get
替换.put
),同时保留用于上载的参数命名。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.