I have a home server that I’m using and hosting files on it. I’m worried about it breaking and loosing access to the files. So what method do you use to backup everything?
ITT: lots of the usual paranoid overkill. If you do rsync with the --backup switch to a remote box or a VPS, that will cover all bases in the real world. The probability of losing anything is close to 0.
The more serious risk is discovering that something broke 3 weeks ago and the backups were not happening. So you need to make sure you are getting some kind of notification when the script completes successfully.
Proxmox Backup Server. It's life-changing. I back up every night and I can't tell you the number of times I've completely messed something up only to revert it in a matter of minutes to the nightly backup. You need a separate machine running it--something that kept me from doing it for the longest time--but it is 100% worth it.
I back that up to Backblaze B2 (using Duplicati currently, but I'm going to switch to Kopia), but thankfully I haven't had to use that, yet.
I am lucky enough to have a second physical location to store a second computer, with effectively free internet access (as long as the data volume is low, under about 1TB/month.)
I use the ZFS file system for my storage pool, so backups are as easy as a few commands in a script triggered every few hours, that takes a ZFS snapshot and tosses it to my second computer via SSH.
Various different ways for various different types of files.
Anything important is shared between my desktop PC's, servers and my phone through Syncthing. Those syncthing folders are all also shared with two separate servers (in two separate locations) with hourly, daily, weekly, monthly volume snapshotting. Think your financial administration, work files, anything you produce, write, your main music collection, etc... It's also a great way to keep your music in sync between your desktop PC and your phone.
Servers have their configuration files, /etc, /var/log, /root, etc... rsynced every 15 minutes to the same two backup servers, also to snapshotted volumes. That way, should any one server burn down, I can rebuild it in a trivial amount of time. This also goes for user profiles, document directories, ProgramData, and anything non-synced on windows PC's.
Specific data sets, like database backups, repositories and such are also generally rsynced regularly, some to snapshotted volumes, some to regulars, depending on the size and volatility of the data.
Bigger file shares, like movies, tv-shows, etc... I don't backup, but they're stored on a distributed GlusterFS, so if any one server goes down, that doesn't lose me everything just yet.
Hardware will fail, sooner or later. You should see any one device as essentially disposable, and have anything of worth synced and archived automatically.
I have everything in its own VM, and Proxmox has a pretty awesome built in backup feature. Three different backups (one night is to my NAS, next night to an on-site external, next night to an external that's swapped out with one at work - weekly). I don't backup the Proxmox host because reinstalling it should it die completely is not a big deal. The VM's are the important part.
I have a mini PC I use to spot check VM backups once a month (full restore on its own network, check its working, delete the VM after).
My Plex NAS only backs up the movies I really care about (everything else I can "re-rip from my DVD collection").
I run everything in docker. I have an ansible playbook that backs up all the docker volumes to a minio server I'm running on a separate machine. I periodically upload backups to idrivee2 with the same playbook
Data goes from one server to second server, and vice versa (different provider, different geolocation). And to backblaze B2 - as far as I know cheapest s3-like storage
Veeam Agent going to a NAS on-site and the NAS is backed up nightly to IDrive because it's the cheapest cloud backup service I could find with Linux support. It's a bit slow, very CPU-bound, but it's robust and their support is pretty responsive.
Borgbackup, using borgmatic as a frontend, to a storage VPS. I backup dozens of machines this way. I simply add a user account for each machine on the VPS, then each machine backs up over ssh to its own account.
Running a Duplicacy container backing up to Google drive for some stuff and Backblaze for mostly all other data. Been using it for a couple years with no issues. The GUI and scheduling is really nice too.
My server runs Plex and has almost 50 TB of video on it. After looking at all the commercial backup options I gave up on backing up that part of the data. :-(
I do backup my personal data, which is less than a terrabyte at this point. I worked out an arrangement with a friend who also runs a server. We each have a drive in the other's server that we use for backup. Every night cron runs a simple rsync script to do an incremental backup of everything new to the other machine.
This approach cost nothing beyond getting the drives. And we will still have our data even if one of the servers is physically destroyed and unrecoverable.
For config files, I use tarsnap.
Each server has its own private key, and a /etc/tarsnap.list file which list the files/directories to backup on it. Then a cronjob runs every week to run tarsnap on them. It's very simple to backup and restore, as your backups are simply tar archives. The only caveat is that you cannot "browse" them without restoring them somewhere, but for config files it's pretty quick and cheap.
For actual data, I use a combination of rclone and dedup (because I was involved in the project at some point, but it's similar to Borg). I sync it to backblaze because that's the cheapest storage I could find. I use dedup to encrypt the backup before sending it to backblaze though.
Restoration is very similar to tarsnap:
I use proxmox server and proxmox backup server (in a VM 🫣) to do encrypted backups.
A raspberry pi has ssh access to PBS and it rsync all the files, and then uploads them to backblaze using rclone.
https://2.5admins.com/ recommended "pull" backups, so if someone hacks your server they don't have access to your backups. If the pi is hacked it can mess with everything, but the idea is that is has a smaller attack surface (just ssh).
I use Duplicati and backup server to both another PC and the cloud. Unlike a lot of data hoarders I take a pretty minimalist approach to only backing up core (mostly docker) configs and OS installation.
I have media lists but to me all that content is ephemeral and easily re-acquired so I don't include it.
Cronjobs and rclone have been enough for me for the past year or so. Interestingly, I've only needed to restore from a backup once after a broken update. It felt great fixing that problem so easily.
I use duplicacy to backup to my local NAS and to Storj.io. In case of a fire I'm always able to restore my files. Storj.io is cheap, easy to access from any location and your files are stored and duplicated on multiple different locations.
My home servers a windows box so I use Backblaze which has unlimited storage for a reasonable fixed price. Have around 11TB backed up. Pay the extra few dollars for the extended 12 month retention of deleted files, which has saved me a few times when I needed to restore a file I couldn’t find.
Locally I run stablebit DrivePool and content is mirrored and pooled using that, which covers me for drive failures.
I've recently begun using duplicati to backup the data from my docker containers and VMware snapshots for the guest VM itself, just currently struggling to understand how to automate the snapshots yet so I do them manually
Almost all the services I host run in docker container (or userland systemd services). What I back up are sqlite databases containing the config or plain data. Every day, my NAS rsyncs the db from my server onto its local storage, and I have Hyper Backup backup the backups into an encrypted S3 bucket. HB keeps the last n versions, and manages their lifecycle. It's all pretty handy!
ZFS array using striping and parity. Daily snapshots get backed up to another machine on the network. 2 external hard drives with mirrors of the backup rotate between my home and office weekly-ish.
I can lose 2 hard drives from the array at the same time without suffering data loss. Any accidentally deleted files can be restored from a snapshot if my house is hit by a meteor I lose maximum of 3-4 days of snapshots.
I run linux for everything, the nice thing is everything is a file so I use rsync to backup all my configs for physical servers. I can do a clean install, run my setup script, then rsync over the config files, reboot and everyone's happy.
For the actual data I also rsync from my main server to others. Each server has a schedule for when they get rsynced to so I have a history of about 3 weeks.
For virtual servers I just use the proxmox built in backup system which works great.
Very important files get encrypted and sent to the cloud as well, but out of dozens of TB this only accounts for a few gigs.
I've also never thrown out a disk or USB stick in my life and use them for archiving, even if the drive is half dead as long as it'll accept data I shove a copy of something on it, label and document it. There's so many copies of everything that it can all be rebuild if needed even if half these drives end up not working. I keep most of these off-site. At some point I'll have to physically destroy the oldest ones like the few 13 GB IDE disks that just make no sense to bother with.
Kopia to Backblaze B2 is what I generally use for off-site backups of my devices. Borg's another good option to look at, but not as friction-less in my experience. There are a couple of additional features that are available in Kopia that are nice to have and are not in Borg (i.e. error correction, file de-duplication) from what I recall.
edit: borg does do de-duplication
I’m backing up my stuff over to Storj DCS (basically S3 but distributed over several regions) and it’s been working like a charm for the better part of a year. Quite cheap as well, similar to Backblaze.
For me the upside was I could prepay with crypto and not use any credit card.
Zfs z2 pool . Not a perfect backup, but it covers disk failure (already lost one disk with no data loss), and accidental file deletion. I'm vulnerable to my house burning down, but overall I sleep well enough.
I use Bacula to an external drive, it was a pain in the ass to configure but once it's running its super reliable and easily extended to other drives or folders
Running a Duplicacy container backing up to Google drive for some stuff and Backblaze for mostly all other data. Been using it for a couple years with no issues. The GUI and scheduling is really nice too.
For my webserver, mysqldump to a secured folder, then restic backup the whole /svr folder, then rsync the restic backup to another server. Also have a system that emails me if these things don't happen daily. The log files are uploaded to a url, the log file is checked for simple errors, and if no file is uploaded in time, email.
Of course, in my case, the url files are uploaded to - and the email server... are the same server I'm backing up... but at least if that becomes a problem, I probably only need the backups I've already made to my second server.
My server uses zfs, which allows me to create regular snapshots with sanoid. This makes it extremly easy to quickly recover individual services or vms without consuming a lot of disk space.
In case the server is not recoverable, I still send the incremental snapshots to a pi clone with a large hard drive. If you use the native disk encryption, the snapshot can be sent encrypted without the second server having access to the data.This solution with zfs and sanoid/syncoid has often made my life easier and, in my experience, uses less bandwidth and cpu load.