Для экспериментов изучите Vagrant или/и Virtualbox CLI и отдельно Ansible:
https://www.vagrantup.com/
https://www.oracle.com/technical-resources/articles/it-infra...
https://www.ansible.com/Экономит кучу сил при разворачивании лабораторных работ для опытов. Если понравится, то это м.б. профессия. Vagrant&Ansible - стандарт.
Возможен такой подход:
Back In Time - домашние папки и часть системных. И графический интерфейс и из ком.строки работает тоже. Можно скриптовать и можно в графике мышекликать. Видел в настройках поддержку SSH. Умеет шифровать бэкап.
Rsync и свой скрипт - системные директории и кэш пакетов пакетного менеджера.
Восстанавливать так:
Систему - установка с флешки, и накат всех пакетов бэкапленного кэша пакетов пакетного менеджера (это даст установленный Back In Time).
Домашние папки, системные папки - востанавливать из Back In Time.
Дальше комбинировать и скриптовать. Важно понимать, что бекап не является бекапом в момент его обновления или работы с ним. Т.е. по уму должно быть не менее двух независимых носителей бэкапа, и одновременно оба никогда не подключаются к системе, не участвуют одновременно в действиях. Ошибки, скачки напряжения и т.п. Есть важный принцип: система сама себя не бекапит, бекап всегда приходит снаружи сам. Принцип дома трудно соблюдаемый, принцип из коммерческих окружений, но это важный момент.
Есть настроенный из коробки Timeshift в составе Linux Mint (по смыслу и наполнению этот дистрибутив - Убунту без Snap). В т.ч. бекапит систему. Если дистрибутив подходит, то можно взять их готовую работу. В дистрибутиве есть шероховатости в настройках графического окружения, но не влияет на собственную, пользователя полезную работу.
Есть файлы устройств. Например, /dev/* Есть файловые системы ядра в /proc и т.д. Их не бэкапят. Это сложность при скриптовании. Есть тема шифрования. Сильно всё усложняет.
Простой способ: можно оценить настройки Back In Time из коробки, подрихтовать исключения, направить Back In Time на корень ФС. Запускать по крон из ком.строки. В момент бекапа выкачивать в кеш установленные руками пакеты (список пакетов можно получать из логов и статусов пакетов у Apt, например; это вопрос скриптования, весь кеш за всю историю хранить можно, но это немало). Иметь две системных флешки с дистрибутивом актульной версии для установки с нуля.
Есть инструмент Unison. Интересная штука. Можно оценить в качестве дополнения к остальному, для домашних папок.
Но, советую, посмотреть в сторону Vagrant&Ansible. Это правильный способ "проверять настройки".