backup script that includes systemd units

This commit is contained in:
2025-11-25 12:28:49 -05:00
parent 0fa4b41557
commit a878cb2b25
3 changed files with 99 additions and 0 deletions

74
system-backup.sh Executable file
View File

@@ -0,0 +1,74 @@
#!/bin/bash
set -e
PKGLIST="pkglist.txt"
SYSTEMD_SYSTEM="systemd_enabled.txt"
SYSTEMD_USER="systemd_user_enabled.txt"
show_help() {
echo "Usage: $0 [OPTION]"
echo ""
echo "Options:"
echo " -b, --backup Create backup files of packages and systemd units"
echo " -r, --restore Restore packages and systemd units from backup files"
echo " -h, --help Show this help message"
}
backup() {
echo "Creating package list..."
paru -Qqe > "$PKGLIST"
echo "Created $PKGLIST"
echo "Creating system unit list..."
systemctl list-unit-files --state=enabled --no-pager | awk '{print $1}' > "$SYSTEMD_SYSTEM"
echo "Created $SYSTEMD_SYSTEM"
echo "Creating user unit list..."
systemctl --user list-unit-files --state=enabled --no-pager | awk '{print $1}' > "$SYSTEMD_USER"
echo "Created $SYSTEMD_USER"
echo "Backup complete."
}
restore() {
if [[ ! -f "$PKGLIST" ]]; then
echo "Error: $PKGLIST not found"
exit 1
fi
echo "Installing packages..."
paru -S --needed - < "$PKGLIST"
if [[ -f "$SYSTEMD_SYSTEM" ]]; then
echo "Enabling system units..."
while read unit; do
sudo systemctl enable "$unit" 2>/dev/null || echo "Skipping $unit"
done < "$SYSTEMD_SYSTEM"
fi
if [[ -f "$SYSTEMD_USER" ]]; then
echo "Enabling user units..."
while read unit; do
systemctl --user enable "$unit" 2>/dev/null || echo "Skipping $unit"
done < "$SYSTEMD_USER"
fi
echo "Restore complete."
}
case "$1" in
-b|--backup)
backup
;;
-r|--restore)
restore
;;
-h|--help)
show_help
;;
*)
show_help
exit 1
;;
esac