I personally find this playbook handy by @louim. It uses rsync which is a lot more efficient than scp. It only copies media when it’s needed.
Of course having a CDN would be ideal, but in some projects the budget/time doesn’t allow for it
Here’s the full post: Pushing or pulling uploads with Trellis