void-minecraft-usb/opt/backup-fs

58 lines
1.4 KiB
Bash

#!/usr/bin/env bash
# used to work around cases where stdin is unavailable or not a terminal
if bash -c ': > /dev/tty' > /dev/null 2>&1; then
TTY_OR_CONSOLE="/dev/tty"
else
TTY_OR_CONSOLE="/dev/console"
fi
function yesno {
unset DISCARD_ME
while [ -z "$DISCARD_ME" ]; do
read -p "[y/n] " -n1 DISCARD_ME < $TTY_OR_CONSOLE
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
}
#TODO: remove
bash -i < $TTY_OR_CONSOLE
#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