#!/bin/bash pkgsum="pkgsum" hostsum="hostsums" hashapp="sha256sum" # Extra functions for restore scripts function exclusions () { # rebuild installed_packages file minus those listed in the exclusions file mv installed_packages installed_packages.orig grep -vf exclusions installed_packages.orig > installed_packages } function mkfast_deb () { # we must check for packages already installed so we don't waste time reinstalling them dpkg --get-selections > installed_packages_fast grep -vf installed_packages_fast installed_packages.orig > installed_packages } function verify () { find /etc -type f -exec $hashapp '{}' \; > $hostsum # I know this is a cheap trick, but it works if [ -f $pkgsum ] && [ -f $hostsum ]; then diff -q $pkgsum $hostsum if [ $? -eq 0 ]; then echo "Verify passed" else echo "Verify failed" fi else echo "Checksum files not found" fi } function check_distro() { if [ -f ./distro_info ]; then . ./distro_info source_distro="$DISTRO_ID" source_version="$DISTRO_VERSION" else cprint 1 "Warning: No distro info found in archive. Cannot verify compatibility." return fi . /etc/os-release target_distro="$ID" target_version="$VERSION_ID" if [ "$source_distro" != "$target_distro" ] || [ "$source_version" != "$target_version" ]; then cprint 3 "Warning: This restore was created on $source_distro $source_version, but the target system is $target_distro $target_version." cprint 3 "Restoration may fail if packages or configurations are incompatible." cprint 3 "Press Enter to continue, or Ctrl+C to abort." read else cprint 2 "Distro match: $source_distro $source_version. Proceeding with restoration." fi }