Add borg.sh
This commit is contained in:
parent
d997182992
commit
7ecf2f65bd
|
@ -0,0 +1,63 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
# My personal script to take Borg backups
|
||||
# Expecting an already initialized repository
|
||||
|
||||
# 0. Gotify-Benachrichtigung, falls Fehler
|
||||
err() {
|
||||
curl "https://gotify.dataprolet.de/message?token=XXXXXXXXXX" -F "title=Borg Backup Desktop" \
|
||||
-F "message=Borg-Backup hatte einen Fehler." -F "priority=5"
|
||||
}
|
||||
|
||||
# 1. Desktop-Benachrichtigung, dass das Backup startet
|
||||
sudo -u $user DISPLAY=:0 DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus notify-send -t 5000 'BorgBackup' 'Backup started..'
|
||||
|
||||
# 2. Verzeichnis für die Logdatei festlegen
|
||||
log="/home/$user/.borg/logs/"$(date +"%Y-%m-%d_%H:%M")".log"
|
||||
|
||||
# 3. Adresse des Repositories festlegen
|
||||
repo= # Fill in your repositories address here
|
||||
|
||||
# 4. Standard streams in Logdatei umleiten
|
||||
exec >> >(tee -i ${log})
|
||||
exec 2>&1
|
||||
|
||||
# 5. Passwort für Repository exportieren
|
||||
export BORG_PASSCOMMAND='cat "/etc/borgpass"'
|
||||
|
||||
# 6. Backup erstellen (niceness = 2, verbose, zeige Statistiken, Kompression = automatisch & zstd)
|
||||
# https://borgbackup.readthedocs.io/en/stable/usage/create.html
|
||||
nice -n 19 ionice -c 3 borg create -v --stats -C auto,zstd \
|
||||
$repo::'{now:%Y-%m-%d_%H:%M}' \
|
||||
/home/$user/Daten \
|
||||
|| err
|
||||
|
||||
# 7. Desktop-Benachrichtigung, dass das Backup beendet ist
|
||||
sudo -u $user DISPLAY=:0 DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus notify-send -t 5000 'BorgBackup' 'Backup finished.'
|
||||
|
||||
# 8. Leerzeichen für die Logdatei
|
||||
echo
|
||||
|
||||
# 9. Desktop-Benachrichtigung, dass das Repository bereinigt wird
|
||||
# https://borgbackup.readthedocs.io/en/stable/usage/prune.html
|
||||
sudo -u $user DISPLAY=:0 DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus notify-send -t 5000 'BorgBackup' 'Pruning backups..'
|
||||
|
||||
# 10. Zeitstempel für die Logdatei (Start)
|
||||
echo "Started pruning backups: $(date)"
|
||||
echo
|
||||
|
||||
# 11. Behalte 7 tägliche, 4 wöchentliche, 6 monatliche und 1 jährliche Backup(s).
|
||||
# Zeitmessung für die Logdatei
|
||||
time borg prune --stats --list --save-space -d=5 -m=3 -y=1 $repo
|
||||
|
||||
# 12. Leerzeile für die Logdatei
|
||||
echo
|
||||
|
||||
# 13. Zeitstempel für die Logdatei (Ende)
|
||||
echo "Finished pruning: $(date)"
|
||||
|
||||
# 14. Desktop-Benachrichtigung, dass die Bereinigung beendet ist
|
||||
sudo -u $user DISPLAY=:0 DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus notify-send -t 5000 'BorgBackup' 'Pruning finished'
|
||||
|
||||
# 15. Logdateien löschen, die älter sind als 30 Tage
|
||||
/usr/bin/find /home/$user/.borg/logs/* -mtime +30 -exec sudo -u $user env XDG_RUNTIME_DIR="/run/user/$(id -u $user)" /usr/bin/rmtrash -rf {} \;
|
Loading…
Reference in New Issue