Solutions:
Assuming that you truly have one master FTP and various slaves:
After uploading, trigger e.g by calling yourwebsite/distribute.php an system('distribute.sh') which contains:
rsync <a ton of parameters to upload to Slave A>
rsync <a ton of parameters to upload to Slave B>
rsync <a ton of parameters to upload to Slave C>
rsync does support lazy synchronization. So you won't keep pushing around the whole thing.
Another way should be (ab)using the versioning system 'git' by the way. So anything uploaded there gets auto-added to a depot (I think git uses a differnt term), your slaves frequently (e.g. cronjob) sync to that git. Benefit might be (more) transactional safety. No danger of distributing half-uploaded files to the slaves.
Perforce (afaik legally free for up to 2 users and 5 client specs. Very, very stable, also with huge binaries) or SVN (annoying .snv subfolders. And I wouldn't say this stable thing...) might do the same for you. Perforce IMO is easier to grasp than git.
But git might be the 'more modern' way to go, and free. Not sure, how it responds to huge binaries, i.e. if it can be talked out of trying to diff'em. Or keep versioning depth on slaves at zero...
Comment:
Hey, I wonder if you are in the same shoes like me: I do press photography, so in the field I have to use an annoying, unstable, tiny upload connection to get to (ideally just 1) FTP server. From there (my webhosters server centre), it would be great if it could be fast distributed through those (I trust: arm-thick T1 cables...) to all the image agencies...
I haven't scripted a solution yet, but I am about to...