FTP服务器之间的文件传输(sftp连接)
2017-05-26 17:21
537 查看
用户需求:将一台ftp服务器上的文件转移到另一台ftp服务器,ftp服务器都采用sftp连接。
解决方案:1.首先从第一台ftp服务器下载文件到本地,再从本地上传到另一台ftp服务器
2.直接获取第一台ftp服务器的文件字节流写入到第二台ftp服务器
由于第一种方案还需要持久化到本地,步骤有些多余,我这里直接选用第二种方案。要求都是sftp连接,因此引入jsch的jar包,如果是ftp连接可以用sun和Apache的FTPClient(sun的FTPClient在jdk1.6后不支持)
代码实现:
1.sftp连接
2.文件传输
3.关闭session、channel、channelsftp
解决方案:1.首先从第一台ftp服务器下载文件到本地,再从本地上传到另一台ftp服务器
2.直接获取第一台ftp服务器的文件字节流写入到第二台ftp服务器
由于第一种方案还需要持久化到本地,步骤有些多余,我这里直接选用第二种方案。要求都是sftp连接,因此引入jsch的jar包,如果是ftp连接可以用sun和Apache的FTPClient(sun的FTPClient在jdk1.6后不支持)
代码实现:
1.sftp连接
JSch jsch = new JSch(); try { session = jsch.getSession(username, url, port); System.out.println("Session created for " + url); session.setPassword(password); Properties sshConfig = new Properties(); sshConfig.put("StrictHostKeyChecking", "no"); session.setConfig(sshConfig); session.connect(); System.out.println("Session connected to " + url); channel = session.openChannel("sftp"); channel.connect(); System.out.println("Opening Channel for " + url); sftp = (ChannelSftp) channel; } catch (JSchException e) { e.printStackTrace(); }
2.文件传输
InputStream is = null; try { is = fromSftp.get(fromPath); // 创建目标目录 createDir(toPath, toSftp); toSftp.put(is, fileName); // 创建备份目录,将传输过的文件备份 createDir(backupPath, fromSftp); fromSftp.rename(fromPath, backupPath + fileName); System.out.println(fileName + " rename to " + backupPath); } catch (SftpException e) { e.printStackTrace(); } finally { try { if(null != is){ // 关闭流 is.close(); } } catch (IOException e) { e.printStackTrace(); } }
3.关闭session、channel、channelsftp
session.disconnect(); channel.disconnect(); sftp.quit(); sftp.disconnect();
相关文章推荐
- Ubuntu16.04 安装FTP服务器vsftpd实现Windows之间传输文件
- 文件传输(FTP)服务器
- 如何使用FTP在PC和AS/400之间传输包含中文的文件?
- 转: linux下不同服务器间数据传输(rcp,scp,rsync,ftp,sftp,lftp,wget,curl)
- 服务器之间scp传输文件,不需要密码
- WIN7 VMware Ubuntu虚拟机连接secureCRT及ftp传输文件
- 文件传输(FTP)服务器
- VMware Ubuntu虚拟机连接secureCRT及UltraEdit ftp传输文件
- Linux 与 Linux服务器之间文件传输方式之SCP
- Java语言实现简单FTP软件------>连接管理模块的实现:主机与服务器之间的连接与关闭操作(八)
- 使用Remote Desktop organizer远程桌面管理工具连接服务器不能实现真机与被远程主机之间的文件拖拉复制
- JAVA连接FTP服务器,并上传/下载文件代码
- Ubuntu与arm开发之间FTP文件传输
- 【FTP服务器之】FTP协议与文件传输
- asp.net使用FtpWebRequest向ftp上传文件报错 基础连接已经关闭: 服务器提交了协议冲突
- TcpTracts( 利用服务器,用于两个或多个私网之间建立tcp连接,可以用于发文件,传语音等 )
- WIN7 VMware Ubuntu虚拟机连接secureCRT及UltraEdit ftp传输文件
- linux下不同服务器间数据传输(rcp,scp,rsync,ftp,sftp,lftp,wget,curl)
- [ubuntu] VMware Ubuntu虚拟机连接secureCRT及UltraEdit ftp传输文件
- Java Socket客户端服务器之间的文件传输