I don't think that's too hacky, other than possibly uploading to S3 instead of a local NAS. It depends on your needs. I upload to S3 on a cron job on my site, but I can afford for it to go down for a few hours or a day.
The key strategy to setting yourself up for a quick recovery is saving "state" away from servers which can be "stateless". If you can make your web server(s) stateless, you can easily rebuild them simply by creating a new server and putting your files on them (assuming they're PHP).
If you have a separated database server, it crashing will be separate from your web server crashing.
On a site generated revenue, or important to business, you may want to at least have some automation setup to setup a secondary server. Or you can have secondary servers pre-built and setup, just waiting.
Then you can decide on the best way to do data recovery (manually from backup files, or automated, perhaps by using database replication and having a way to promote a replica database to master).
There's lots of setups, but "high availability" tends to get expensive :D
As for user-uploaded files, I use S3 again - a central file storage will do wonders for you! This goes towards removing "state" from your web servers. Using S3 lets you not worry about where your uploads are - you can bring up new servers which connect to S3 via their API, rather than have to worry about recovering uploads and putting them back in the right place on your server.
Unfortunately I think the answer to your question is "spend some money", but at least S3 is cheap! I think I pay ~ $1-2 a month for about a years of database backups and some other random files.