Por que não usar RSync ?
Pseudo-código (não é garantido que seja preciso!)
foreach hard_drive_device
rsync source_dir $hard_drive_device/dest_dir
fi
Se isso não for assíncrono, mas conseguir sua tarefa. Você poderia colocar um & no final, se você quiser bifurcar o processo em segundo plano
Ou usando a antiga filosofia hacker: risque sua própria coceira!
Você poderia criar um programa em seu idioma favorito chamado multicopy, que pega uma fonte de leitura e grava em vários destinos
Pseudo-código (não é garantido que seja preciso!)
if(src is directory)
for each file in directory
CopyFile(file, destList)
fi
else
CopyFile(src, destList)
fi
CopyFile(src, destList) {
foreach block in src
foreach dest in destList
open(dest/src)
seek(end)
write(block)
fi
fi
}