I have been trying to copy few selected files (after performing few checks), in a remote server to the same remote server using:
File localFile = new File(srcPath);
sftpChannel.put(localFile.getAbsolutePath(),localFile.getName());
I have even tried to copy those selected files to my local machine using the get()
method.
Can somebody help?
A core SFTP protocol does not support duplicating a remote file.
There's draft of copy-file
extension to the protocol, but that's supported by only few SFTP servers (ProFTPD/mod_sftp and Bitvise SFTP server for example).
The JSch library does not support the copy-file
extension either.
Alternatives:
- If you have a shell access, open an "exec" channel, and use shell
cp
command (or equivalent command for your server's OS).
See Exec.java
example.
- Otherwise, your only option is to download the file to a local temporary location and upload its copy back to a different/target remote directory. Or use streams, to avoid a temporary file.
See also How can I copy/duplicate a file to another directory using SFTP?