void-bash-installer/files/bin/void-snapshot
2021-05-11 09:21:21 +02:00

85 lines
2.1 KiB
Bash

#!/bin/bash
if [ "${UID}" -ne "0" ]; then
echo "Keine Rootrechte."
exit 1
fi
infos() {
echo "Snapshots sind Kopien der Dateien die keinen zusätzlichen Platz"
echo "benötigen."
echo ""
echo "Es wird bei jedem Update vom Betriebsystem ein Snapshot angelegt."
echo "Es wird jede volle Stunde vom Betriebsystem ein Snapshot angelegt."
echo "So ist das Betriebssystem auch bei Problemen bootbar."
echo ""
echo "Optional kann auch jede Stunde ein Snapshot der persönlichen Daten"
echo "angelegt werden. Dann verliert man bei versehentlichem löschen"
echo "maximal die Arbeit einer Stunde."
echo "Dafür folgendes im Terminal ausführen:"
echo 'echo REGULAR_SNAPSHOT_HOME=1 | sudo tee -a /etc/void-snapshot.cfg'
echo ""
echo "Nur für Experten:"
echo 'echo NO_UPDATE_GRUB=1 | sudo tee -a /etc/void-snapshot.cfg'
}
cron=""
update=""
case $1 in
update)
update=1
word="update"
;;
cron)
cron=1
word="regular"
;;
*)
infos
exit
;;
esac
if [ "$#" -eq "0" ]; then
infos
exit
fi
cfg="/etc/btrbk/btrbk.conf.void"
test -f "/etc/btrbk/btrbk.conf" && cfg="/etc/btrbk/btrbk.conf"
if mountpoint -q /var/lib/backup/quelle/bootfs; then
mkdir -p "/var/lib/backup/quelle/bootfs/system/snapshots/${word}"
if ! btrbk --config="${cfg}" --quiet run "${word}boot"; then
btrbk --config="${cfg}" --quiet clean "${word}boot"
echo "fail: btrbk --config=${cfg} --quiet run ${word}boot"
exit
fi
fi
mkdir -p "/var/lib/backup/quelle/rootfs/system/snapshots/${word}"
if ! btrbk --config="${cfg}" --quiet run "${word}root"; then
btrbk --config="${cfg}" --quiet clean "${word}root"
echo "fail: btrbk --config=${cfg} --quiet run ${word}root"
exit
fi
if [[ -z "${NO_UPDATE_GRUB}" ]]; then
if ! update-grub 2> /dev/null; then
echo update-grub failed
exit
fi
fi
if [ "${cron}" ]; then
test -f /etc/void-snapshot.cfg && . /etc/void-snapshot.cfg
if [ "${REGULAR_SNAPSHOT_HOME}" ]; then
mkdir -p "/var/lib/backup/quelle/rootfs/system/snapshots/${word}"
if ! btrbk --config="${cfg}" --quiet run "${word}home"; then
btrbk --config="${cfg}" --quiet clean "${word}home"
echo "fail: btrbk --config=${cfg} --quiet clean ${word}home"
exit
fi
fi
fi