These days,I am work with jsch-0.1.41,operate resources on a remote linux server via ChannelSftp.I find that there is no function provide the functionality similar to shell command “cp”.Now I want to copy a file from a directory to the other,these two directory both remote directory on linux server.
Any wrong point in my presentation,please point it out.Thanks.
The SFTP protocol doesn’t offer such a command, and thus also JSch’s ChannelSftp doesn’t offer it.
You have basically two choices:
Use a combination of
getandput, i.e. download the file and upload it again. You can do this without local storage (simply connect one of the streams to the other), but this still requires moving the data twice through the network (and encrypting/decrypting twice), where it wouldn’t be really necessary. Use this only if the other way doesn’t work.Don’t use SFTP, but use an
execchannel to execute a copy command on the server. On unix servers, this command is usually namedcp, on Windows servers likelycopy. (This will not work if the server’s administrator somehow limited your account to SFTP-only access.)