Well, my first question would be - do you have to use serial?
600 MB sounds like an awful lot for a serial connection.
Second, I have never done anything like this, and I'm not sure I understood why you're losing data and where it's being "vanishing". If you're asking the port for X bytes and the timeout is too short, you will lose your data. You might need to play with it.
But let's start with the first question I asked - does it have to be serial?
___________________
Try to take over the world!