I suggest the following:
1) Pool your drives! Don't be stuck with simple RAIDs.
It's not 1999 anymore. Find a solution that lets you add and replace drives of any size anytime. Simple RAIDs only let you replace one drive with the same capacity, but if you want to upgrade drives, you often lose out on extra capacity unless you upgrade the whole thing or add drives in pairs. So whether it's Stablebit DrivePool, ZFS, LVM, FlexRAID, BTRFS, DriveBender, HDFS, CephFS, or something else, find something that lets you use a new drives of any capacity whenever you want.
2) Use offsite backup!
Do SOMETHING to get your data off of a single server. Whether that's periodically backing up to cold storage (ie: plug in a drive, copy data, then send it to a safe deposit box), backing up to a friend via Crashplan, or syncing to the cloud, keep a copy of your data further than a lightning strike or natural disaster away.
3) Version your files.
Cryptolocker viruses are often a worst-case scenario to build against. Suppose you go on vacation and somehow a new Windows 0-day is found and you come home to your entire computer being encrypted, and dutifully backed up over your old backups. After getting rid of the locker, you can save yourself a bunch of time with a proper versioning solution. When implementing #2, make sure you have copies of files from the last day/week/month/year or get software to do it for you, like Crashplan.
My current solution:
A) Local server (Windows 10 + Stablebit DrivePool + Resilio Sync + Crashplan)
B) Remote server (Ubuntu 16.04 + Resilio Sync + Samba share)
C) Cloud (OneDrive)
D) Friends (Crashplan)
Servers A and B run a file share that's synced together via Resilo Sync. The copy on A is versioned by Crashplan to a drivepool of 6 drives from 500GB to 3TB. I can add/remove drives at will, and I get email alerts if a drive goes down or has bad sectors or something. I can also customize how many copies of each file or folder I want to keep.
Server B just has a single drive with no resiliency whatsoever. It's basically a very very external shared hard drive that's kept in sync.
The Cloud (C) has a copy of the most important data from A. I am in the process of moving off of the cloud and converting solely to Resilio Sync as my own private cloud, because why not.
Friends (D) exchange Crashplan shares with me which is free.
Everything is replaceable:
If A loses a hard drive, the drivepool can automatically move data to another drive. If it loses more drives than its fault tolerance, I can still access data on the remaining drives (unlike RAID!) and rebuild the rest from B, C, and D.
If B dies, it can be rebuilt from A.
If C dies or gets overwritten with encrypted files, I can restore it from Crashplan from D or A.
If D (any friends) decide they're done hosting my shares, I can fall back to A while I make new Crashplan friends. Hopefully that doesn't take too long!
However, my system has room for improvement. For example, I have no drive images are anywhere. If I lose a server, it has to be rebuilt from scratch. If anyone has suggestions for me I'd welcome them (if OP would graciously allow me to piggyback off this thread).sidenote: You know, after all these threads on backups, I'm kind of surprised we gerbils haven't come up with some P2P solution that we could self-host among each other. What if we found some distributed filesystem software solution and managed it ourselves?