127 lines
3.1 KiB
Bash
127 lines
3.1 KiB
Bash
#!/bin/bash
|
|
if [ "${UID}" -ne "0" ]; then
|
|
echo "Keine Rootrechte."
|
|
exit 1
|
|
fi
|
|
|
|
config() {
|
|
echo "Durch Snapshots werden deine Daten regelmässig"
|
|
echo "(zur Zeit alle zwei Stunden), ohne mehr Platz"
|
|
echo "zu verbrauchen, gedoppelt."
|
|
echo "Dieses hilft zb. gegen unbeabsichtigtes löschen von Dateien."
|
|
echo "Du kannst aktivieren, das sie regelmässig gemacht werden."
|
|
echo "Du kannst aktivieren, das sie vor einem Update gemacht werden."
|
|
echo "Es ist sinnvoll dieses zu aktivieren."
|
|
echo "Es ist optional, Snapsshots auch für privaten Daten zu aktivieren."
|
|
echo "Achtung, Daten werden dadurch erst sehr verzögert gelöscht!"
|
|
while read -p "Regelmässige Snapshots aktivieren? [Y/n] " answer; do
|
|
test -z "${answer}" && answer="y"
|
|
case "${answer}" in
|
|
y*|Y*|j*|J*)
|
|
if ! grep -q "#void.system" /var/spool/cron/root; then
|
|
echo '0 */2 * * * /usr/bin/void-snapshot #void.system' >> /var/spool/cron/root
|
|
else
|
|
echo "Schon aktiviert."
|
|
fi
|
|
break
|
|
;;
|
|
n*|N*)
|
|
if grep -q "#void.system" /var/spool/cron/root; then
|
|
sed -i '/#void.system/d' /var/spool/cron/root
|
|
else
|
|
echo "Schon deaktiviert."
|
|
fi
|
|
break
|
|
;;
|
|
*) echo "Antwort nicht eindeutig." ;;
|
|
esac
|
|
done
|
|
|
|
answer=""
|
|
while read -p "Snapshots vor dem Update? [Y/n] " answer; do
|
|
test -z "${answer}" && answer="y"
|
|
case "${answer}" in
|
|
y*|Y*|j*|J*)
|
|
if ! grep -q "SNAP_BEFORE_UPDATE" "/etc/void-snapshot.cfg"; then
|
|
echo "SNAP_BEFORE_UPDATE=true" >> "/etc/void-snapshot.cfg"
|
|
fi
|
|
break
|
|
;;
|
|
n*|N*)
|
|
if grep -q "SNAP_BEFORE_UPDATE" "/etc/void-snapshot.cfg"; then
|
|
sed -i '/SNAP_BEFORE_UPDATE/d' "/etc/void-snapshot.cfg"
|
|
fi
|
|
break
|
|
;;
|
|
*) echo "Antwort nicht eindeutig." ;;
|
|
esac
|
|
done
|
|
|
|
answer=""
|
|
while read -p "Möchtest du auch deine Privaten Daten Snapshotten? [Y/n] " answer; do
|
|
test -z "${answer}" && answer="y"
|
|
case "${answer}" in
|
|
y*|Y*|j*|J*)
|
|
if ! grep -q "SNAP_HOME" "/etc/void-snapshot.cfg"; then
|
|
echo "SNAP_HOME=true" >> "/etc/void-snapshot.cfg"
|
|
fi
|
|
break
|
|
;;
|
|
n*|N*)
|
|
if grep -q "SNAP_HOME" "/etc/void-snapshot.cfg"; then
|
|
sed -i '/SNAP_HOME/d' "/etc/void-snapshot.cfg"
|
|
fi
|
|
break
|
|
;;
|
|
*) echo "Antwort nicht eindeutig." ;;
|
|
esac
|
|
done
|
|
}
|
|
|
|
cron=""
|
|
update=""
|
|
if [ -t 0 ]; then
|
|
cron=1
|
|
elif [ "${1}" = "update" ]; then
|
|
update=1
|
|
elif [ "${1}" = "config" ]; then
|
|
config
|
|
exit
|
|
fi
|
|
|
|
cfg="/etc/btrbk/btrbk.conf.void"
|
|
|
|
if [ ! -f "/etc/void-snapshot.cfg" ]; then
|
|
test -z "${cron}" && exit 0
|
|
config || exit
|
|
fi
|
|
|
|
. "/etc/void-snapshot.cfg"
|
|
|
|
if [ ! "${SNAP_BEFORE_UPDATE}" ] && [ "${update}" ]; then
|
|
exit 1
|
|
fi
|
|
|
|
if [ -f /etc/btrbk/btrbk.conf ]; then
|
|
btrbk --progress --quiet run snapshot
|
|
else
|
|
if mountpoint -q /var/lib/backup/quelle/bootfs; then
|
|
snapshotbootfs="snapshotbootfs"
|
|
fi
|
|
for s in snapshotrootfs "${snapshotbootfs}"; do
|
|
test "${s}" && if ! btrbk --config="${cfg}" --quiet run "${s}"; then
|
|
btrbk --config="${cfg}" --quiet clean "${s}"
|
|
echo "fail: btrbk --config=${cfg} --quiet run ${s}"
|
|
exit
|
|
fi
|
|
done
|
|
fi
|
|
|
|
if [ "${SNAP_HOME}" ]; then
|
|
btrbk --config="${cfg}" --quiet run snapshothomefs
|
|
fi
|
|
|
|
if ! sudo update-grub 2> /dev/null; then
|
|
echo update-grub failed
|
|
fi
|