这些天,我正在使用jsch-0.1.41,通过ChannelSftp在远程linux服务器上操作资源。我发现没有提供类似于shell命令“cp”的功能。现在我想从一个目录到另一个,这两个目录都是linux服务器上的远程目录。
我的演示中有任何错误点,请指出。谢谢。
SFTP 协议不提供这样的命令,因此 JSch 的 ChannelSftp 也不提供它。
你基本上有两种选择:
使用 和 的组合get
,put
即下载文件并再次上传。您可以在没有本地存储的情况下执行此操作(只需将一个流连接到另一个流),但这仍然需要通过网络移动数据两次(并加密/解密两次),而这并不是真正需要的。仅当其他方法不起作用时才使用此方法。
不要使用 SFTP,而是使用exec
通道在服务器上执行复制命令。在 unix 服务器上,此命令通常命名为cp
,在 Windows 服务器上可能是copy
。(如果服务器管理员以某种方式将您的帐户限制为仅限 SFTP 访问,这将不起作用。)