Context: I access a server that generates zip files on the fly. Because they are generated on demand ls usually does not report the correct size, just an approximation.
If I try to download such a zip file and it is larger than what ls did report previously, the file is corrupted by Cyberduck. It seems to me, that Cyberduck trims it to the size that was reported by ls. If I use other SFTP clients (e.g. simply /usr/bin/sftp from OpenSSH_6.2p2) it fetches the complete file from the server, only Cyberduck corrupts it.
In a concrete example the server reported a zip file to be 1.0 MB large when it actually was 2.0 MB large. Cyberduck starts the download and it seems to download more than 1.0 MB, because when the transfers window reaches 1.0 MB for the file, the download size is not increased anymore but the download speed is still updated. After a few more microseconds the dialog now shows „Transfer incomplete“ (see screenshot) and the file on my disk is actually only about an MB long.
The log did not show any output.
I tried two older versions of Cyberduck: 4.4.2 and 3.3b4. The same corruption happened with 4.4.2 but with 3.3b4 I could download the files correctly. So this bug exists for a longer time already.