hier meine 5 cent um einen externen Proxmox Backup Server automatisch bei jedem Backup-Job sicher zu starten, das Backup-Storage zu aktivieren und wieder aus zu schalten. Anregungen und meinen Dank gehen an diesen Beitrag.
Als Vorbereitung ist es wichtig das man zum PBS mittels ssh-key Zugang ohne Passwort hat. Wie das geht bitte googeln.
Als erstes legen wir ein Script an mit:
Folgenden Inhalt dort rein kopieren:
!!!Natürlich die Variablen auf deine Werte anpassen!!!
dieses Script ausführbar machen:
dann das Script zu deinem Backup-Auftrag hinzu fügen:
das könnte so aussehen:
Das war es auch schon. Denke daran beim ausprobieren des Backup-Jobs deine GUI zu refreshen bzw. neu zu laden. Um zusehen was passiert kannst du in dem Script die Zeile:
Will man den Backup-Server manuell starten und stoppen habe ich zwei kleine Scripte erstellt:
und
beide ausführbar machen mit
Wenn man mag kann man sich ein Alias anlegen, dazu:
root einmal ausloggen und wieder einloggen.
dann einfach mit
so, ich hoffe es können viele gebrauchen.
Toll wäre es wenn die Entwickler so ein Feature mit in die GUI einbauen könnten. Die meisten werden ihren Backup-Server sicher nicht 24/7 laufen lassen um einmal am Tag für 5min. ein Backup zu starten !?
Als Vorbereitung ist es wichtig das man zum PBS mittels ssh-key Zugang ohne Passwort hat. Wie das geht bitte googeln.
Als erstes legen wir ein Script an mit:
nano /usr/local/bin/vzdump-hook-script
Folgenden Inhalt dort rein kopieren:
!!!Natürlich die Variablen auf deine Werte anpassen!!!
Bash:
#!/bin/bash
# script um den Backupserver zu starten wenn ein Backup ansteht. Danach wieder Ausschalten
# dieses Hook-Skript (nano /usr/local/bin/vzdump-hook-script) zum Backup-Auftrag hinzufügen: nano /etc/pve/jobs.cfg
# by AME 05/2023
#----------------------- Variablen --------------------------------------------------------------------------------#
PATH=/usr/sbin:${PATH}
# SET-X damit die Ausfuehrung protokolliert wird
# set -x
storeid=BackupServer # Variable - um welches storage handelt es sich
mac="aa:bb:cc:dd:ee:ff" # MAC Adresse des PBS-Servers
host="192.168.xxx.xxx" # Hostname oder IP des PBS-Servers
nic=eno1 # Netzwerk-Karte über die WOL läuft
#----------------------- Programmablauf ---------------------------------------------------------------------------#
if [ "$1" == "job-init" ]; then # wenn ein backup job rein kommt dann
pvesm set $storeid --disable 0 # der Storage wir enabled
etherwake -i $nic $mac # starte den Backup-server
sleep 10s
# ping $host -c 3 < /dev/null &
until [ "$act" == "true" ] # arbeite die loop-schleife ab bis die variable "ack" wahr ist
do
com=$(pvesm status --storage $storeid | tail -1); # Abfrage über den Status des Storage
[[ "$com" =~ ($storeid+ +)(pbs+ +)(active|inactive) ]];
if [ "${BASH_REMATCH[3]}" == "active" ]; then # der server ist erreichbar also aktiv?
echo "Backup-Server ist erreichbar"
act=true # variable "act" wirt wahr um aus dem loop raus zukommen
sleep 6s
exit 0
else
((c=c+1)) # counter
fi
if [ $c == 180 ]; then # wenn der server nach 180 sec. nicht erreichbar ist exit 1 e>
echo "ERROR Backup-Server ist nicht erreich bar"
sleep 2s
exit 1
fi
sleep 1s
done
fi
if [ "$1" == "job-end" ]; then # Wenn der Backup Job erledigt ist dann
echo "Backup erledigt, warte 20 Sekunden dann wird der Backup-Server gestoppt"
sleep 20s
pvesm set $storeid --disable 1 # der Storage wir disabled, sonst ist er nicht erreichbar und>
ssh root@$host -p 22 "poweroff < /dev/null &" # der Backupserver wird heruntergefahren
fi
exit 0
chmod +x /usr/local/bin/vzdump-hook-script
dann das Script zu deinem Backup-Auftrag hinzu fügen:
nano /etc/pve/jobs.cfg
das könnte so aussehen:
Code:
vzdump: backup-2b4e2f43-c989
schedule 05:40
all 1
enabled 1
mailnotification always
mailto deine@Email.de
mode snapshot
notes-template {{guestname}}
prune-backups keep-daily=3,keep-last=1,keep-monthly=6,keep-weekly=4,keep-yearly=2
script /usr/local/bin/vzdump-hook-script #<--------- !!!!
storage BackupServer
# set -x
auskommentieren und mit tail -f /var/log/syslog
ansehen.Will man den Backup-Server manuell starten und stoppen habe ich zwei kleine Scripte erstellt:
nano start-PBS.sh
Bash:
#!/bin/bash
# script um den Backupserver zu starten.
# by AME 05/2023
#----------------------- Variablen --------------------------------------------------------------------------------#
# SET-X damit die Ausfuehrung protokolliert wird
# set -x
storeid=BackupServer # Variable - um welches storage handelt es sich
mac="aa:bb:cc:dd:ee:ff" # MAC Adresse des PBS-Servers
host="192.168.xxx.xxx" # Hostname oder IP des PBS-Servers
nic=eno1 # Netzwerk-Karte über die WOL läuft
#----------------------- Programmablauf ---------------------------------------------------------------------------#
/usr/sbin/etherwake -i $nic $mac # starte den Backup-server
sleep 2s
pvesm set $storeid --disable 0 # der Storage wir enabled
until [ "$act" == "true" ] # arbeite die loop-schleife ab bis die variable "ack" wahr ist
do
com=$(pvesm status --storage $storeid | tail -1); # keine ahnung
[[ "$com" =~ (BackupServer+ +)(pbs+ +)(active|inactive) ]];
if [ "${BASH_REMATCH[3]}" == "active" ]; then # der server ist erreichbar also aktiv?
echo "Backup-Server ist jetzt erreichbar"
act=true
#sleep 1s
exit 0
else
((c=c+1)) # counter
fi
if [ $c == 180 ]; then # wenn der server nach 180 sec. nicht erreichbar ist exit 1 e>
echo "ERROR Backup-Server ist nicht erreich bar"
sleep 1s
exit 1
fi
sleep 1s
done
exit 0
und
nano stop-PBS.sh
Bash:
#!/bin/bash
# script um den Backupserver zu stoppen.
# by AME 05/2023
#----------------------- Variablen --------------------------------------------------------------------------------#
# SET-X damit die Ausfuehrung protokolliert wird
# set -x
storeid=BackupServer # Variable - um welches storage handelt es sich
mac="aa:bb:cc:dd:ee:ff" # MAC Adresse des PBS-Servers
host="192.168.xxx.xxx" # Hostname oder IP des PBS-Servers
nic=eno1 # Netzwerk-Karte über die WOL läuft
#----------------------- Programmablauf ---------------------------------------------------------------------------#
echo "der Backup-Server fährt nun runter, das Backup-Storage wird ausgehangen"
#sleep 2s
pvesm set $storeid --disable 1 # der Storage wir disabled umd die syslog nicht zu zu müllen
ssh root@$host -p 22 "/usr/sbin/poweroff < /dev/null &"
exit 0
chmod +x start-PBS.sh
und chmod +x stop-PBS.sh
Wenn man mag kann man sich ein Alias anlegen, dazu:
nano .bashrc
z.B. folgendes einfügen:
Bash:
# Alias for BAckup-Server Start Stop
alias uppbs='./start-PBS.sh'
alias dnpbs='./stop-PBS.sh'
dann einfach mit
uppbs
den server starten und mit dnpbs
ihn wieder stoppen.so, ich hoffe es können viele gebrauchen.
Toll wäre es wenn die Entwickler so ein Feature mit in die GUI einbauen könnten. Die meisten werden ihren Backup-Server sicher nicht 24/7 laufen lassen um einmal am Tag für 5min. ein Backup zu starten !?
Last edited: