syssetup/restore.lib.bash

66 lines
No EOL
1.8 KiB
Bash
Executable file

#!/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
}