From: Bastian Dehn Date: Wed, 18 Jan 2017 09:09:45 +0000 (+0100) Subject: change: rename execute files X-Git-Url: https://gitweb.hhaalo.de/?a=commitdiff_plain;h=416f18c1e8df3bc16427cf1105fe838163a90f80;p=simple-backup.git change: rename execute files --- diff --git a/backup b/backup new file mode 100755 index 0000000..2bbda44 --- /dev/null +++ b/backup @@ -0,0 +1,80 @@ +#!/bin/bash +### Script legt ein Backup mit dem heutigen Datum an +### macht Hardlinks auf unveränderte Daten zum +### vorhaerigen Backup + +# Informationen fuer den Sicherungsserver +sicherungspfad="/images/backup" +sicherungsname="sicherung" +wunschanzahl=20 + +# 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 ]; then + tmpordner=$(find $sicherungspfad -maxdepth 1 -type d -name "*_"$sicherungsname"" | sort | tail --lines=1) + vorsicherungsordner=${tmpordner##*/} +fi + +# Sicherungsordner auf dem Sicherungsserver erstellen +mkdir $sicherungspfad/$sicherungsordner + +for remoterechner in $(cat rechner.txt); do + remoteuser="root" + # Sicherungsordner fuer den Remote-Host erstellen + mkdir $sicherungspfad/$sicherungsordner/$remoterechner + + # 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; do + printf "Rechner %s; %s ist online\n" "$remoterechner" "$VM" + printf "Fahre %s herunter\n\n" "$VM" + ssh $remoteuser@$remoterechner virsh shutdown $VM | while [ "$(ssh $remoteuser@$remoterechner virsh list --name | grep $VM)" != "" ]; do sleep 2 ; done + Disks=$(ssh $remoteuser@$remoterechner virsh domblklist $VM --details | grep disk | awk '{print $4}') + for Disk in $Disks; do + printf "Disk %s von %s wird gesichert\n\n" "$Disk" "$VM" + rsync --archive --verbose --relative --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 + printf "\nFahre %s hoch\n" "$VM" + ssh $remoteuser@$remoterechner virsh start $VM + done + for VM in $offlineVM; do + printf "Rechner %s; %s ist offline\n\n" "$remoterechner" "$VM" + Disks=$(ssh $remoteuser@$remoterechner virsh domblklist $VM --details | grep disk | awk '{print $4}') + for Disk in $Disks; do + printf "Disk %s von %s wird gesichert\n\n" "$Disk" "$VM" + rsync --archive --verbose --relative --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 + printf "\nRechner %s; Pfad %s wird gesichert\n\n" "$remoterechner" "$pfad" + rsync --archive --verbose --relative --log-file=$sicherungspfad/$sicherungsordner/$remoterechner/backup-$(echo $pfad | sed 's/\//-/g').log --filter="- *.qcow2" --filter="- *.raw" --link-dest=$sicherungspfad/$vorsicherungsordner/$remoterechner $remoteuser@$remoterechner:$pfad $sicherungspfad/$sicherungsordner/$remoterechner + fi + done +done + +# Die Anzahl der Backups wird ermittelt +# Alte Backups werden geloesch +# falls mehr als die Wunschanzahl vorhanden sind +backupanzahl=$(ls --directory $sicherungspfad/*/ | grep "_$sicherungsname" | sort | wc --lines) +loeschanzahl=$(($backupanzahl - $wunschanzahl)) + +if [ $backupanzahl -gt $wunschanzahl ] +then + printf "\nEs sind %i Sicherungen vorhanden.\n" $backupanzahl + printf "Es werden %i Sicherungen gelöscht.\n\n" $loeschanzahl + ls -d $sicherungspfad/*/ | grep "_$sicherungsname" --max-count=$loeschanzahl | xargs rm --recursive +else + printf "\nEs wird %i Sicherungen vorhanden.\n" $backupanzahl +fi diff --git a/backup-einfach b/backup-einfach new file mode 100755 index 0000000..e445622 --- /dev/null +++ b/backup-einfach @@ -0,0 +1,28 @@ +#!/bin/bash +### Script macht ein Backup von verschiedenen Pfaden +### auf verschiedenen Rechner und Syncronisiert das Backup + +# Informationen fuer den Sicherungsserver +sicherungspfad="/images/backup" +sicherungsordner="einfach-sicherung" + +# Sicherungsordner auf dem Sicherungsserver erstellen +if [ ! -d $sicherungspfad/$sicherungsordner ]; then + mkdir $sicherungspfad/$sicherungsordner +fi + +for remoterechner in $(cat rechner.txt); do + remoteuser="root" + # 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 + for pfad in $(cat pfad-$remoterechner.txt); do + printf "\nRechner %s; Pfad %s wird gesichert\n\n" "$remoterechner" "$pfad" + rsync --archive --verbose --relative --delete --log-file=$sicherungspfad/$sicherungsordner/$remoterechner/backup-$(echo $pfad | sed 's/\//-/g').log $remoteuser@$remoterechner:$pfad $sicherungspfad/$sicherungsordner/$remoterechner + done +done diff --git a/backup-einfach.sh b/backup-einfach.sh deleted file mode 100755 index e445622..0000000 --- a/backup-einfach.sh +++ /dev/null @@ -1,28 +0,0 @@ -#!/bin/bash -### Script macht ein Backup von verschiedenen Pfaden -### auf verschiedenen Rechner und Syncronisiert das Backup - -# Informationen fuer den Sicherungsserver -sicherungspfad="/images/backup" -sicherungsordner="einfach-sicherung" - -# Sicherungsordner auf dem Sicherungsserver erstellen -if [ ! -d $sicherungspfad/$sicherungsordner ]; then - mkdir $sicherungspfad/$sicherungsordner -fi - -for remoterechner in $(cat rechner.txt); do - remoteuser="root" - # 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 - for pfad in $(cat pfad-$remoterechner.txt); do - printf "\nRechner %s; Pfad %s wird gesichert\n\n" "$remoterechner" "$pfad" - rsync --archive --verbose --relative --delete --log-file=$sicherungspfad/$sicherungsordner/$remoterechner/backup-$(echo $pfad | sed 's/\//-/g').log $remoteuser@$remoterechner:$pfad $sicherungspfad/$sicherungsordner/$remoterechner - done -done diff --git a/backup.sh b/backup.sh deleted file mode 100755 index 2bbda44..0000000 --- a/backup.sh +++ /dev/null @@ -1,80 +0,0 @@ -#!/bin/bash -### Script legt ein Backup mit dem heutigen Datum an -### macht Hardlinks auf unveränderte Daten zum -### vorhaerigen Backup - -# Informationen fuer den Sicherungsserver -sicherungspfad="/images/backup" -sicherungsname="sicherung" -wunschanzahl=20 - -# 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 ]; then - tmpordner=$(find $sicherungspfad -maxdepth 1 -type d -name "*_"$sicherungsname"" | sort | tail --lines=1) - vorsicherungsordner=${tmpordner##*/} -fi - -# Sicherungsordner auf dem Sicherungsserver erstellen -mkdir $sicherungspfad/$sicherungsordner - -for remoterechner in $(cat rechner.txt); do - remoteuser="root" - # Sicherungsordner fuer den Remote-Host erstellen - mkdir $sicherungspfad/$sicherungsordner/$remoterechner - - # 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; do - printf "Rechner %s; %s ist online\n" "$remoterechner" "$VM" - printf "Fahre %s herunter\n\n" "$VM" - ssh $remoteuser@$remoterechner virsh shutdown $VM | while [ "$(ssh $remoteuser@$remoterechner virsh list --name | grep $VM)" != "" ]; do sleep 2 ; done - Disks=$(ssh $remoteuser@$remoterechner virsh domblklist $VM --details | grep disk | awk '{print $4}') - for Disk in $Disks; do - printf "Disk %s von %s wird gesichert\n\n" "$Disk" "$VM" - rsync --archive --verbose --relative --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 - printf "\nFahre %s hoch\n" "$VM" - ssh $remoteuser@$remoterechner virsh start $VM - done - for VM in $offlineVM; do - printf "Rechner %s; %s ist offline\n\n" "$remoterechner" "$VM" - Disks=$(ssh $remoteuser@$remoterechner virsh domblklist $VM --details | grep disk | awk '{print $4}') - for Disk in $Disks; do - printf "Disk %s von %s wird gesichert\n\n" "$Disk" "$VM" - rsync --archive --verbose --relative --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 - printf "\nRechner %s; Pfad %s wird gesichert\n\n" "$remoterechner" "$pfad" - rsync --archive --verbose --relative --log-file=$sicherungspfad/$sicherungsordner/$remoterechner/backup-$(echo $pfad | sed 's/\//-/g').log --filter="- *.qcow2" --filter="- *.raw" --link-dest=$sicherungspfad/$vorsicherungsordner/$remoterechner $remoteuser@$remoterechner:$pfad $sicherungspfad/$sicherungsordner/$remoterechner - fi - done -done - -# Die Anzahl der Backups wird ermittelt -# Alte Backups werden geloesch -# falls mehr als die Wunschanzahl vorhanden sind -backupanzahl=$(ls --directory $sicherungspfad/*/ | grep "_$sicherungsname" | sort | wc --lines) -loeschanzahl=$(($backupanzahl - $wunschanzahl)) - -if [ $backupanzahl -gt $wunschanzahl ] -then - printf "\nEs sind %i Sicherungen vorhanden.\n" $backupanzahl - printf "Es werden %i Sicherungen gelöscht.\n\n" $loeschanzahl - ls -d $sicherungspfad/*/ | grep "_$sicherungsname" --max-count=$loeschanzahl | xargs rm --recursive -else - printf "\nEs wird %i Sicherungen vorhanden.\n" $backupanzahl -fi