Something that I looked at, but Didn't Use...
I saw this system in Database Journal, but didn't like it, even though seemed pretty fast:
The basic idea that he's working off of is what I call "turd files", which I HATE! I suppose for one thing, I feel like they represent some sort of security risk, but moreover you must manage them... delete them? overwrite them? save only newer? No thanks, it's hard enough to keep a clean site without additional clutter.
What I Did Use...
All ftp transactions are handled through a class object -- this is good because an additional layer of object could be placed on top which would allow the application/object user to select which type of transfer method to use, dynamically, to achieve the needed results/compatibility.
The class object, "clsFTP", was sourced from here:
The link above also gives a little further source that requires Google groups permissions.