backup script that includes systemd units
This commit is contained in:
74
system-backup.sh
Executable file
74
system-backup.sh
Executable 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
|
||||
16
systemd_enabled.txt
Normal file
16
systemd_enabled.txt
Normal file
@@ -0,0 +1,16 @@
|
||||
UNIT
|
||||
bluetooth.service
|
||||
getty@.service
|
||||
NetworkManager-dispatcher.service
|
||||
NetworkManager-wait-online.service
|
||||
NetworkManager.service
|
||||
reflector.service
|
||||
systemd-boot-update.service
|
||||
tlp.service
|
||||
avahi-daemon.socket
|
||||
cups.socket
|
||||
pcscd.socket
|
||||
systemd-userdbd.socket
|
||||
remote-fs.target
|
||||
|
||||
13
|
||||
9
systemd_user_enabled.txt
Normal file
9
systemd_user_enabled.txt
Normal file
@@ -0,0 +1,9 @@
|
||||
UNIT
|
||||
kanshi.service
|
||||
wireplumber.service
|
||||
xdg-user-dirs.service
|
||||
p11-kit-server.socket
|
||||
pipewire-pulse.socket
|
||||
pipewire.socket
|
||||
|
||||
6
|
||||
Reference in New Issue
Block a user