66 lines
No EOL
1.8 KiB
Bash
Executable file
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
|
|
} |