void-minecraft-usb/opt/backup-fs

64 lines
1.5 KiB
Bash

#!/usr/bin/env bash
function yesno {
unset DISCARD_ME
while [ -z "$DISCARD_ME" ]; do
# get input from /dev/tty to work around missing stdin
read -p "[y/n] " -n1 DISCARD_ME < /dev/tty
case "$DISCARD_ME" in
y)
return 0
;;
n)
return 1
;;
*)
echo " Please enter y for yes or n for no."
unset DISCARD_ME
;;
esac
done
}
# Overlay should still be mounted, right?
cat /proc/mounts
read -p "
press any key" -n1 DISCARD_ME < /dev/tty
# And no services running?
ps aux | grep -vF "[kworker"
read -p "
press any key" -n1 DISCARD_ME < /dev/tty
#TODO: remove above debugging sanity checks
#TODO: refuse to run if system is running
#TODO: add a way to tell the system whether to back up before shutting down
#TODO: colors
echo "Back up system changes to disk?
This only affects things outside the /home directory.
Backing up the system will take some time.
"
if yesno; then
echo "Backing up..."
#TODO: fiddle with squashfs parameters to find optimal settings
#TODO: exclude /tmp
mksquashfs / /run/void-usb/container/new_squashfs.img -b 1M -comp xz -one-file-system -progress -noappend -e /var/cache/xbps
#TODO: check if enough disk space
# yes -> create new image next to old image
# no -> create new image in RAM
#TODO: figure out when appending to existing squashfs is a good idea
mv /run/void-usb/container/new_squashfs.img /run/void-usb/container/squashfs.img
else
echo ""
echo "Not backing up."
fi