Linux is great in many respects, but with most popular Linux distros, having a clean filesystem structure and code/config/data set-up are not among them. Maintaining most real world Linux-based systems is absurdly complicated as a direct result.
The only part I've found complex is finding out where and how various apps actually store their data, particularly when I don't really have much interest in the app.
Apart from that however, system restoration is pretty trivial.
For example, let's say a basic Apache webserver.
Apache stores it's master website in /var/www and personal websites under a users homedir.
So you have a pre-backup script (or just a cronjob) that runs:
dpkg --get-selections >/root/current-packages.txt
Backups should always consist of /root , /home , and /etc no matter what.
As mentioned with Apache, we need to add /var/www to that mix.
Now to do a restore, you install from the debian disc, then restore your directories from backup.
apt-get update && dpkg --set-selections /root/current-packages.txt && apt-get install
At that point all your software and dependencies are back from the listing in /root , and services started up from your own configs in /etc , and in this case Apache is happily again serving from /var/www and homedirs.
That's it. One CD boot, one reboot into the live OS, and a few commands to restore all data/software/apps/libraries/dependencies which get started after install and run from your edited configs just as before.
Again, the only real trick is not missing any application data. Especially from a sysadmin point of view.
A user of the machine asks for WierdSQL. What do I care about learning a new SQL server? I just want to make sure I can make consistent and regular backups of its data.
I don't want to hear someone say "Oh the raw DBs are in /var/blah/blah" which are always in use and always changing.
I want to hear "Use this command to backup the data to date/time stamped .bak files where ever, then go backup that whereever dir - and here are the commands to restore .bak files into a fresh install"
For servers I setup for myself, it's pretty guaranteed I either know the software already and can answer all of the above questions, or I'm just learning it and so there is no risk or useful data to be lost and it doesn't matter.
But for servers I run for others, yes it can be a lot more work to learn those things, and is certainly not nearly as fun as the former.