# Informationen fuer den Sicherungsserver
sicherungspfad="/images/backup"
-sicherungsname="einfach-sicherung"
+sicherungsordner="einfach-sicherung"
-# Sicherungsordnernamen
-sicherungsordner="$sicherungsname"
# Sicherungsordner auf dem Sicherungsserver erstellen
if [ ! -d $sicherungspfad/$sicherungsordner ]
then
for remoterechner in $(cat rechner.txt)
do
remoteuser="root"
- # Sicherungsordner auf dem Sicherungsserver erstellen
+ # Sicherungsordner vom Remote-Host
+ # auf dem Sicherungsserver erstellen
if [ ! -d $sicherungspfad/$sicherungsordner/$remoterechner ]
then
mkdir $sicherungspfad/$sicherungsordner/$remoterechner
fi
- # Sicherung fuer die jeweils angegebenen Pfade in pfad.txt erstellen inkl. logs
+ # Sicherung fuer die jeweils angegebenen Pfade
+ # in pfad.txt erstellen inkl. logs
for pfad in $(cat pfad-$remoterechner.txt)
do
echo
sicherungsname="sicherung"
wunschanzahl=20
-# Sicherungsordnernamen generieren und Vorsicherungsordnername generieren
+# Sicherungsordnernamen generieren
+# und Vorsicherungsordnername ermitteln
sicherungsordner="$(date +%Y-%m-%d)"_"$sicherungsname"
vorsicherungsordner="$(date -d "1 Day ago" +%Y-%m-%d)"_"$sicherungsname"
if [ ! -d $sicherungspfad/$vorsicherungsordner ]
tmpordner=$(find $sicherungspfad -maxdepth 1 -type d -name "*_"$sicherungsname"" | sort | tail -n 1)
vorsicherungsordner=${tmpordner##*/}
fi
+
# Sicherungsordner auf dem Sicherungsserver erstellen
mkdir $sicherungspfad/$sicherungsordner
for remoterechner in $(cat rechner.txt)
do
remoteuser="root"
- # Sicherungsordner auf dem Sicherungsserver erstellen
+ # Sicherungsordner fuer den Remote-Host erstellen
mkdir $sicherungspfad/$sicherungsordner/$remoterechner
- # Sicherung fuer die jeweils angegebenen Pfade in pfad.txt erstellen inkl. logs
+ # Sicherung fuer die jeweils angegebenen Pfade
+ # in pfad.txt erstellen inkl. logs
+ # bzw. KVM HD Sicherung erstellen
for pfad in $(cat pfad-$remoterechner.txt)
do
if [ "$pfad" == "virsh" ]
then
+ # Sicherung von KVM virtuellen Maschinen
+ # Online VMs werden heruntergefahren, gesichert und dann wieder hochgefahren
+ # Offline VMs werden direkt gesichert
onlineVM=$(ssh $remoteuser@$remoterechner virsh list --name)
offlineVM=$(ssh $remoteuser@$remoterechner virsh list --all | grep 'shut off' | awk '{print $2}')
for VM in $onlineVM
Disks=$(ssh $remoteuser@$remoterechner virsh domblklist $VM --details | grep disk | awk '{print $4}')
for Disk in $Disks
do
- echo
echo "Disk $Disk von $VM wird gesichert"
echo
rsync -avR --progress --log-file=$sicherungspfad/$sicherungsordner/$remoterechner/backup-$(echo $Disk | sed 's/\//-/g').log --link-dest=$sicherungspfad/$vorsicherungsordner/$remoterechner $remoteuser@$remoterechner:$Disk $sicherungspfad/$sicherungsordner/$remoterechner
done
done
else
+ # Dateipfade werden gesichert
+ # Es werden Dateien mit *.qcow2 und *.raw ingnoriert
echo
echo "Rechner $remoterechner; Pfad $pfad wird gesichert"
echo
done
done
-##############################
-
-# Aeltere Sicherungen loeschen
+# Die Anzahl der Backups wird ermittelt
+# Alte Backups werden geloesch
+# falls mehr als die Wunschanzahl vorhanden sind
backupanzahl=$(ls -d $sicherungspfad/*/ | grep "_$sicherungsname" | sort | wc -l)
loeschanzahl=$(($backupanzahl - $wunschanzahl))