Recovery of Linux using recovery CD 2.1.1 does not seem possible

I was able to restore a Windows Vm using teh recovery disk no problem, obviously since there is no image for linux that is not an option. However even from the console (F2), while I can partition, format and mount the new disk. i can not actually restore anything as there is no urbackupclientctl and urbackuprestore only seems to support image restores.

While at it the only example I’ve found of restoring an entire filesystem is:
urbackupclientctl restore-start -b 637 -d /root -m / -t /mnt/Debian

I’m very impressed with Windows worked like a champ, but I’m now concerned with Linux and how to recover as obviously a backup program is only as good as the recovery. Assuming I have the data for Linux (which I should as I have both full and incremental backups of /)

I’d expect to recover all files (?) and then use grub to reinstall the bootloader followed by fixing blkid’s and then boot the new drive, the problem is restoring the data using the recover disk does not appear possible, so I’m DOA on step one.
I also do not know how /proc, /dev … are to be restored or does urbackup handle this, or am I expected to recreate by hand?
It almost seems the solution is to reinstall Linux then restore the files, replacing existing ones but again I can not find any clear documentation for this.

So basically how does one recover linux what is the procedure?

Yeah, while the functionality to restore files from the restore cd is present, it’s not exposed via cmd line UI or tested currently (help wanted!).

I’d setup the base system via the usual OS installers (or via base image, if it is something like Digital Ocean) and then download + install the client from the web interface (contains key to access past backups), stop all/most running processes, then restore via your command ( urbackupclientctl restore-start -b 637 -d /root).

Edit (specifically), but untested and needs some work+testing. On base system:

mkdir -p /tmproot
mount -t tmpfs none /tmproot
mkdir /tmproot/{proc,sys,dev,run,usr,var,tmp,oldroot}
mkdir /tmproot/usr/share/
cp -ax /{bin,etc,mnt,sbin,lib,lib64} /tmproot/ > /dev/null 2>&1 || true
cp -ax /usr/{bin,sbin,lib,lib64} /tmproot/usr/ > /dev/null 2>&1 || true
cp -ax /usr/share/ca-certificates /tmproot/usr/share/  > /dev/null 2>&1 || true
cp -ax /var/{account,empty,lib,local,lock,nis,opt,preserve,run,spool,tmp,yp} /tmproot/var/ > /dev/null 2>&1 || true
mount --make-rprivate /
pivot_root /tmproot /tmproot/oldroot
for i in dev proc sys run; do mount --move /oldroot/$i /$i; done
echo "Restarting services..."
systemctl daemon-reexec
systemctl restart rsyslog
systemctl restart ssh
kill -9 $(pidof dhclient) > /dev/null 2>&1 || true
systemctl stop unattended-upgrades > /dev/null 2>&1 || true
systemctl stop systemd-udevd > /dev/null 2>&1 || true
systemctl restart systemd-timesyncd > /dev/null 2>&1 || true
systemctl restart dbus > /dev/null 2>&1 || true
systemctl restart atd > /dev/null 2>&1 || true
systemctl restart lvm2-lvmetad > /dev/null 2>&1 || true
systemctl restart lxcfs > /dev/null 2>&1 || true
systemctl restart accounts-daemon > /dev/null 2>&1 || true
systemctl restart networkd-dispatcher > /dev/null 2>&1 || true
systemctl restart polkit > /dev/null 2>&1 || true
systemctl restart systemd-networkd > /dev/null 2>&1 || true
systemctl restart systemd-logind > /dev/null 2>&1 || true
systemctl restart cron > /dev/null 2>&1 || true
systemctl restart systemd-journald > /dev/null 2>&1 || true
systemctl restart ntp > /dev/null 2>&1 || true

Then install the client with the version from the web interface status screen. Then:

urbackupclientctl restore-start -b 637 -d /root -m / -d /oldroot
#maybe fixup fstab / disk ids etc.
cp /etc/fstab /oldroot/etc/fstab
init 6

(That’s perhaps more clean than overwriting a running system)