What is the best way to back up as much as possible of Debian 12 on my laptop to a server that has SSH available? I am currently backing up my users /home/<homedir> folder, but I would like to be able to nuke and restore the system from a backup.
I have ventoy on an external drive if that helps any.
P.S. I would like to be able to do incremental backups too.
Even for a home system? Not a fleet of data center servers. I am currently using rsync to backup /home/<<user>>/ to the ssh server. I tend to make a lot of changes to the base Debian/KDE install.
Yeah, it's worth it to just start fresh. Keep your user data, nuke the rest and setup from scratch w/automation if it's extremely customized to your liking.
I personally try to use the default config as much as possible so there's not as much to set up after installing from ISO.
What kind of changes? Package installation, removal and configuration? Use apt-mark showmanual to save list of manually installed packages, dpkg --get-selections | grep 'deinstall$' to save list of removed packages, debconf --get-selections to save debconf package settings, backup files that you edited in /etc. This should be enough for restoration, wouldn't take a long time for backup and avoid risk of filesystem inconsistency.
Ignoring the whole debate about whether to include system files in your backup, rdiff-backup sounds a lot like what you want. It stores your latest backup as plain files on-disk just like rsync, checks the box for incremental backups (older versions of files are stored as diffs, which you can easily browse with rdiff-backup-fs) and isn't much different to use than rsync. That said, people will point out that you can make rsync do pretty much the same stuff using hard linking.
With rear you can back up your system to pretty much anything. Mounted volume, USB drive, even to a bootable iso.
I use weekly rear backups for my system, and hourly Borg backups for diffs/point in time restore of user data, but you could use rear for an entire system snapshot as well.
I actually did this **dd if=(running system root volume) of=(local usb attached hard drive file) ** This gives me a full disk backup that would be no worse than if power got yanked. (I know laptops have batteries, for this case we are pretending to be a desktop with no UPS)
no calls for restic? I use restic and a s3 layer on the other end, be it either backblaze/wasabi/s3/whatever for remote or minio/garage for local object storage. Stuff just works, then I write a systemd unit file to back it up according to whatever schedule I want for both a local target and a remote target. Helps to solve the 3-2-1 backup strategy this way. Good luck!