As to bullet #2.... there's no way to check the correctness of the file without having a remote checksum to verify against. You can, however, if you have some control of the destination server issue a SITE command to calculate that checksum and compare it to your local version. (Which is a very good idea, and I'm glad you're considering doing it--TCP doesn't guarantee end-to-end error-free transfer)