Cant believe people didnt already work this out, or if they did, not bother telling everyone else about it. With some help from Luis i have managed to make a automatic FastDL script, now since i run TCAdmin on port 80 i had to setup a web server to run on port 90 for this to work. (Im not writing a guide on how to do that, look it up).
Now this is for a Garrysmod server running on Windows. There will be slight changes between OS's and games but it cant be hard to work out.
1) Go to Game Settings -> Garrysmod -> Custom Scripts (Scroll down)
2) Click New
3) Set script engine to "Batch File/Shell Script" and event to "Before Started"
4) Enter this into the big text box "ROBOCOPY %Service_RootDirectory%orangebox\garrysmod C:\YOURWEBSERVERURL\%Service_ServiceId%\garrysmod /S /XF *.lua *.bat *.dll *.html gamemodes settings" (No quotation marks)
5) Save then go back to the Garrysmod game settings and go to the Configuration Files button
6) Click server.cfg then the template tab. Then add this line anywhere in the file
sv_downloadurl "http://$[service.IpAddress]:90/$[service.ServiceId]/garrysmod/"
(Edit that url if you have the fastdl directory not in the root)
7) Save all that and go back to the Garrysmod game settings again and then click "Update Existing Services"
And thats it! Everytime the user reboots the fastdl gets updated (for cache updates 2 restarts may be required, cant see a way round that). For your existing servers you will need to add the relevant downloadurl line into their server.cfg's, but all new servers will have fastdl setup and ready to go automatically.
Hope this helps.
p.s The first time the server is started/restarted since you applied the script will take awhile, but once its copied all the files the first time it only copies what is new (unconfirmed) and what is missing. Which saves alot of time.