There are many ways to transfer files from one system to another. As it sounds like both are iSeries the list could include DDM (with a simple CPYF for instance), SNDNETF, QFileSvr file system of IFS, etc plus the FTP solution you are already familiar with. All will have the drawback of potentially impacting interactive users that are sharing the same communication channel (though there are some knobs such as TCP Quality of service (QOS) available to you). And depending on the data you may also be able to reduce impact on the communication line by way of data compression (assuming you have spare cycles on the systems themselves in order to compress/decompress).
One alternative that comes to mind would be to stop sending files. Rather than sending entire files (batches of data), you might be able to send the individual records as they become available on the source system. If we’re talking database records perhaps a simple trigger program could send the records over in real time (with scenarios such as writing directly to a socket, writing to a DDM *DTAQ, writing to a DDM database, etc) or, along similiar lines, perhaps you could journal the file and receive the journal images in real time for transmission to the target system (or use remote journaling for that matter). A real time capture of the data should minimize the potential impact to interactive users (the data is spread out over a wider time period) and you could, of course, also build in your own throttles/controls (where most — though not all — file transfer utilities don’t have much in the way of throttles (or checkpoint/restart for that matter)). Obviously the feasibility of this approach depends on the data source, and your question doesn’t give much information on that.
I might be able to help more if you can provide additional information on where the data is (database, IFS, etc) on the source system and how the data is getting there (fed by local applications, sent as a file from yet a 3rd system, etc).