The 6 hour speed problem you might be stuck with.
You can use FTP reget and reput for interrupted transfers. This may not be supported by the ftp server.
As for sending files, you can send the files in packets to the other side using RandomAccessClass package to break up and keep the index. Sending could be done via a wsdl. This would require the other end to reassemble the file, ie have a client application.
#webMethods#Integration-Server-and-ESB#Flow-and-Java-services