I had a task to copy few terabytes of data from one NAS in my local home net to another NAS in the same net. These NASes (MyBook World Edition II) have very slow CPU, so best way to copy is to use FTP. I am able to download files from the NAS at 35MB/s in samba and upload at 21MB/s using FTP.
1. if I download file from the NAS to my local hard drive, i have 35MB/s in Vista explorer.
2. if I upload file from the local drive to a NAS using FTP & WinSCP, I have 21mb/s
3. but if I upload in the WinSCP from the windows share to the FTP directly, I have 5-7 MB/s only and very unstable.
I downloaded sources of the WinSCP and found that main copy loop works like this:
a) read 16k from CFile
b) send to socket
this should work fast if CFile is a local file, the delay is slow. But in case of remote share, this depends on the internal Windows read-ahead for remote files.
So, request is:
Modify class CFileFix in the filezilla\stdafx.h to be 2-threaded. Main thread should read available data, another thread should read ahead into the large (several megabytes) buffer.
I believe this is not heavy task :-)