There is no such thing as the objectively best solution. Each tool has advantages and disadvantages. And every user has different preferences and requirements.
Personally, I am using Borg for years. And I have had to restore data several times, which has worked every time.
In addition to Borg, you can also look at Borgmatic. This wrapper extends the functionality and makes some things easier.
And if you want to use a graphical user interface, you can have a look at Vorta or Pika.
Using borg backup, just because there are some nice frontends for the gnome ecosystem (when I am using gnome, I love to use gnome apps), and it has a nice cmd for scripting when using something else (using it on servers)
Kopia has been working great for me as well. It's simple, versatile and reliable. I previously used Duplicati but kept running into jobs failing for no reason, backup configurations missing randomly and simple restores taking hours. It was a hot mess and I'm happy I switched.
I want to love kopia but the command line syntax feels unnatural to me. I don't know why either. For the whole month I test drove it, I had to look up every single time how to do something. Contrast this with restic which is less featureful in some ways but a few days in it felt like I was just using git.
btrfs is a great filesystem and btrbk complements it easily. Switching between snapshots is also really easy if something goes wrong and you need to restore.
automated/networked backups like people are talking about here are great, but even just an external SSD and the nautilus copy function will give you at least some insurance.
I've used borg for a while and like it a lot. I would say your best option for pure linux is borg+borgmatic/vorta just because borg is battle-tested.
If you run any other OSs and don't mind a relative newcomer, I've found kopia to be easy to recommend to my windows friends. At this point kopia has been around long enough (~4 years?) that I think it's safe to trust its integrity with personal data. It has all the important features from borg in a cross-platform solution, so it's also a viable alternative for borg on linux if you don't like borg's frontends for whatever reason.
Multiple.
Locally I have Timeshift doing btrfs snapshots every so often. This is mostly to roll back to a snapshot if something breaks. I've never had to use it (and probably should).
I use Pika backup every once in a while for a local backup to an external drive. Mostly because it's easy to restore quickly.
I have duplicacy doing backups to a cloud provider. I used to use duplicati for this, and it was fine - although I didn't like that it seems to be forever in beta. I like that duplicacy can do deduplication between backups of different machines which most other solutions I've seen cannot. I like its selection of cloud providers vs Borg/Vorta and some others.
I've been using restic. It has built-in dedup & encryption and supports both local and remote storage. I'm using it to back up to a local restic-server (pointing to a USB drive) and Backblaze B2.
Restores for single or small sets of files is easy: restic -r $REPO mount /mnt
Then browse through the filesystem view of your snapshots and copy just like any other filesystem.
I've used Borg for years now. It's been rock solid. I test my backups regularly and have done several actual recoveries. I trust it with my data, which is the best thing I can say about backup software.
What is your strategie for testing? I am also using borg but i am not sure how to properly test it. Was thinking of a VM. But the data is way to much for it.
I started using Timeshift when it was included with a distro I was using and haven't had reason to shift away from it. Have already used it once to do a full restore.
I'm currently working on a disaster recovery plan using fsarchiver. I have very limited experience with it so far, but it had the features and social proof I was looking for.
I have so far used it to create offline filesystem backups of two volumes, one was LUKS encrypted (has to be manually "opened" with cryptsetup).
Just one warning. If doing live, think about state and test your restores. Just mention because things like databases and ecryptfs will not properly archive live. There are various ways around, but consider if you have concerns regarding getting really good complete backups taken at one point in time and on live systems.
I use my own scripts with rsync etc, I don't back up my OS itself since I have installing it automated with scripts as well. I just back up specific things I need with my scripts.
would you like to share those or do you have references for creating such scripts?
this is on my to do list since years but I always struggle where to begin with.
Learning bash has been great for me, it's helped a ton being able to automate so many different things even just like installing and configuring specific applications to work the way I want, etc
I think a script to manually run for manual backups plus a different script to run for automatic backups scheduled via cronjob is a great way to go.
There's of course more advanced things like zfs snapshots which I won't get into, but I think my explanation as a general concept should be fairly useful.
I am old school. I just use GNU Tar with the Pax format and multiple external detachable encypted hard drives. Reason is it is simple and a well known tool that is very common with a standard archive format.
I'm curious - how much data are you backing up with that method and how frequently are you doing your backups? Doesn't sound like it would scale well, but I'm also wondering if maybe this is perfect and I've just been over thinking it.
There is not a size limit. Lot of these other methods actually use GNU Tar behind the scenes anyway. More then that GNU tar has been used for decades for this purpose. Pull out any Unix book from 2 decades ago and you will see "tar", "cpio", and "dump/restore" as the way. The new tool out there is Pax and in fact GNU Tar supports the new "pax" format. Moreover GNU Tar with Pax format can backup almost full disk structure including hard links, ACLs, and extended attributes which a lot of tools do not do. It is still useful to archive some things at a lower level like your partition table, and boot blocks of course. You also have to decide what run-level (such as rescue) you want to archive in, and/or what services you should stop, or provide separate to file system dumps for depending on your system. Databases, and things like ecryptfs take some special thought (thought it does for any tool). It is also good to do test restores to verify your disaster plan.
I use tar on many systems. My workstation is about 1TB of data. Backup is about 11 hours though I think it could be faster if I disabled compression (I currently use the standard gzip compression which is not optimal). I think the process is CPU bound by the compression at the moment. Going to uncompressed or using parallel gzip at level 2 is probably the fastest you can do and should really speed things up by 4X or more. I have played with this some for my wife and her raw backup is a lot faster now. My wife uses USB 3 external drives specifically plugged into USB 3 ports (the one with the SS symbol and the blue interior), and with a USB 3 related cable. I use 6TB naked SATA drives I insert into a hot mount enclosure and store in storage boxes. My backup system can theoretically do incrementals too, but it has some issues since I have moved to BTRFS so I do not use that at the moment. Did always use before. I have an idea how to fix, but need to debug and test incrementals now.
How often: I backup monthly. When my incrementals were working I use to do it weekly or whenever I got nervous. Other option for the BTRFS file systems would be to use their native backup tools. Not sure though, I like to use generic stuff. Lot to be said for generic.
Big downside of tar is the mind numbing man page. Getting the options correct takes some real thought. You also have to be comfortable with the shell and Bash scripting. Big upside you can customize exactly what you want.
For my Ubuntu desktop, I use the builtin backup tool to take backups on my NAS. For my homelab, I have everything running on Proxmox and my Proxmox backup server takes care of the homelab backups.
I use FreeFileSync. It's the only GUI tool I found that let's me sync folders while omitting file deletions. It lets you create batch files from the GUI that I execute with crontab multiple times per day.
Rsync is great but if you want snapshots and file history rsnapshot works pretty well. It's based on rsync but for every sync it creates shortcuts for existing files and only copies changes and new files. It saves space and remains transparent for the user. FreeFileSync is also amazing
I use NixOS so all my system configuration is already saved in my NixOS configs, which I save on GitHub. For dotfiles that aren't managed by NixOS I use syncthing to sync them between my devices, but no real backup cause I can just remake them if I need to, and things like my Neovim and VSCode configs are managed by my NixOS configs so they're backed up as well.
Yeah I have a full impermanence setup using tmpfs, which is really nice. I did it like on the NixOS wiki and it's been helpful for organize my dotfiles and keeping track of all the random stuff that programs put everywhere.
I actually have all my stuff in a separate /stuff folder kinda by accident so my /home only has dotfiles and things like that.
I'm currently using TimeShift to backup my desktop onto an external hard drive (the why is because of how simple it is to use) and I'll be making a copy of anything I upload to my jellyfin server onto the external hard drive as well. I hope to eventually have a dedicated backup server and have a duplicate of it at a friend's house for offside backup too
I just use a script on an systemd timer. Well two scripts on two timers really - one running daily, one weekly for different data. It's just a bunch of rsync commands copying folders to an hdd in my system and I reroute the output into a simple log file, mainly to verify if it ran at all. I am a bit paranoid about that. I can also run it manually whenever I want.
Oh and some of the data I also rsync again to a smb cloud drive from Hetzner.
I do not keep multiple versions and I delete remote files that have been deleted locally. It's just a 1:1 copy.
Oh and I use OpenSuse Tumbleweed so I have auto configured btrfs snapshots. Though I have not needed them yet and could not even say how I can use those. I figure that out once I need them.
Just a reminder. Consider and test your restore process as well. Backups without restore testing are kind of questionable. Also think how the restore will go. Do you want to do a bare metal restore, or will you just reinstall, and restore certain things for example. Lot of these backup methods will not get a true bare metal restore set, nor can file system backups be "perfect" if they are done on a running system. Databases and things like cryptfs mounts for example can be problematic for example. Nor do all tools necessarily backup the full structure of the file system.
Not saying these are always issues, just be aware of them.