Java SFTP进程生成器
我必须从Java调用unix命令,并且必须使用。我想使用密钥身份验证通过SFTP登录,并且我想将文件从本地目录SFTP到远程位置Java SFTP进程生成器,java,unix,sftp,processbuilder,Java,Unix,Sftp,Processbuilder,我必须从Java调用unix命令,并且必须使用。我想使用密钥身份验证通过SFTP登录,并且我想将文件从本地目录SFTP到远程位置 ProcessBuilder pb = new ProcessBuilder("sftp","-oIdentityFile=privateKey","-b","commands.txt","username@hostname"); commands.txt中的内容是 put localFileDirectory remoteDirectory exit 有什么方法
ProcessBuilder pb = new ProcessBuilder("sftp","-oIdentityFile=privateKey","-b","commands.txt","username@hostname");
commands.txt中的内容是
put localFileDirectory remoteDirectory
exit
有什么方法可以在processbuilder中提供localFileDirectory和remoteDirectory?这些应该是动态的,我必须给它processbuilder。两种可能的方法:
scp
命令。它执行相同的基于ssh的文件传输,但允许您在命令行上指定源和目标
ProcessBuilder pb = new ProcessBuilder("scp", "-i privateKey", "-r",
"localFileDirectory", "username@hostname:remoteDirectory");
-r
表示“递归”,如果要传输整个文件夹,则需要使用该选项。如果只是传输一个文件,则不需要它commands.txt
文件谢谢@AndrewMedico。我尝试了第一个选项,它显示“通道0上的exec请求失败,连接丢失”。看起来我的目标机器中没有安装SCP。我认为scp和sftp客户端使用相同的服务器端机制,但可能不是。@AndrewMedico实际上不是,sftp是SSH的子系统,而scp需要在SSH服务器上打开shell或执行命令的权限;shell和sftp是两个完全不同的东西。如果我希望在过去24小时内创建的文件只从远程服务器复制到本地服务器,有什么建议吗。