在单个操作中移动 SFTP 位置中的多个文件

Move multiple files in a SFTP location in a single operation

我必须将多个文件从文件夹 A 移动到 SFTP 位置的 B。我在 java 中使用 Jsch 库。目前,我的实现通过调用下面定义的方法 move 来一一完成。

我们可以一次性传输它吗,因为我已经有了所有的源文件路径 - 这样会比来回多次 IO 通信更有效率。

    public default boolean move(String srcPath, String destPath) throws JSchException, SftpException
    {
        ChannelSftp channelSftp = getChannel();

        if (channelSftp == null)
            throw new SftpException(0, "Service: ChannelSftp is NULL");

        channelSftp.rename(srcPath, destPath);

        disconnect(channelSftp);

        return true;
    }

public default void disconnect(ChannelSftp channelSftp) throws JSchException
    {
        channelSftp.disconnect();
        Session session =  channelSftp.getSession();
        if(session != null)
            session.disconnect();
    }

SFTP协议中没有批量移动操作。所以没有办法实现你的要求。


但是你应该重复使用 ChannelSftp。无需为每个移动请求打开和关闭它。实际上,您甚至 open/close 每个请求的整个 SFTP 连接。

半年前我在回答你的Getting session and SFTP channel in Java using JSch library时实际上已经建议你了,你甚至都懒得回应。