Have you looked at the list method to rsync? You could use this to generate a list of files that need to be copied. I have not personally used this package, but it says that it returns a list with sizes. You could then split this list into n lists containing file totals of roughly equivalent sizes. You could then use scripts using rcp/scp to run through these lists, and have the main script harvest the children when they are finished. It is true that cron will not start a new copy of a job while the original is running, however if you set the interval to a small value, then it will still run within the next interval of when the last one finishes. Alternatively, you could use the 'at' queue, and have the job reschedule itself after completing. The code details are, of course, left as an exercise for the user :)