Push SFTP serves as an SFTP command-line client, akin to the standard SFTP command inherent in most major operating systems. In addition to implementing all the standard SFTP commands, Push SFTP introduces the “push” command, designed to enhance transfer performance on networks with high latency.
The push command accelerates the transfer by splitting the file into separate parts and uploading them in parallel over multiple SSH connections. Push SFTP maintains full compatibility with most standard SSH/SFTP servers, including OpenSSH, the most commonly used SSH server.
Jadaptive has extended its Java SSH library’s SFTP client to support the new “push” method of transferring files. The client splits the file into several segments, each uploaded simultaneously via a new connection. Thanks to the SFTP protocol’s support for random access, each part is written back to its original position in the remote file without any need to server-side processing.
Alongside this process, Jadaptive has introduced SFTP extensions for multi-part uploads for file systems without true random access or the ability to write to the same file across multiple connections.
Push SFTP also incorporates file hashing SFTP extensions so that the server can verify the transferred file’s contents for consistency when supported by the server.
Lab tests have shown a performance boost ranging from x2.5 to x3 in the original ‘put’ command speed of the OpenSSH SFTP command-line client. However, it’s important to note that results may vary across different environments. The ‘push’ command offers several adjustable options; for instance, our tests employed the default chunking size of three parallel uploads.
Below is the screen captures of the tests performed from the Jadaptive Office in the UK, uploaded to an Amazon EC2 instance in us-east-1. The maximum upload speed supported by our network is 1Gbps.
The results will vary across different networks and conditions. Overall the default three connection configuration has worked well in testing across different environments.
Push SFTP is a free, open-source, cross-platform solution for Windows, OSX, and Linux under the GPL. It is built using Maverick Synergy, Jadaptive’s open-source Java SSH API.
Push SFTP can seamlessly replace the standard SFTP command, offering full compatibility and, with batching support, can replace existing scripts based on the standard command.
Push SFTP is a cross-platform solution that can be installed on most operating systems.
If you want to contribute to this project, you should fork the project to your own GitHub account, make your desired changes, and then submit a pull request to us to consider for inclusion in the main project.