SFTP进程生成器

SFTP Processbuilder

我必须从 Java 调用 unix 命令并且我必须使用 ProcessBuilder。我想使用密钥身份验证通过 SFTP 登录,我想将文件从本地目录 SFTP 到远程位置。

ProcessBuilder pb = new ProcessBuilder("sftp","-oIdentityFile=privateKey","-b","commands.txt","username@hostname");

commands.txt中的内容是

put localFileDirectory remoteDirectory
exit

有什么方法可以在 processbuilder 中提供 localFileDirectory 和 remoteDirectory 吗?这些应该是动态的,我必须给它 processbuilder。

两种可能的方法:

  1. 请改用 scp 命令。它执行相同的基于 ssh 的文件传输,但允许您在命令行上指定源和目标。

    ProcessBuilder pb = new ProcessBuilder("scp", "-i privateKey", "-r",
        "localFileDirectory", "username@hostname:remoteDirectory");
    

    -r 用于 "recursive",如果您要传输整个文件夹则需要。如果您只是传输单个文件,则不需要。

  2. 从您的 Java 代码生成 commands.txt 文件。