Inkrementelle Sicherung via rsync

Für Modifikationen in und um KeyHelp.
Post Reply
User avatar
OlliTheDarkness
Posts: 1854
Joined: Tue 14. Aug 2018, 16:41
Location: Essen (NRW)

Inkrementelle Sicherung via rsync

Post by OlliTheDarkness »

Kleines Backup Script welches, wenn via Cronjob richtig eingerichtet, eine html Ausgabe zum Status gibt.

Das ganze war und ist für mich so total ausreichend gewesen bisher, da es nur als schnellansicht daliegt und ich Backups eh nochmal über andere Wege gegenprüfe.

Es kann gern genutzt werden wesehalb ich es hier nochmal in veränderter Form als in einem meiner älteren Beiträge anbiete. :)

---------- Schnellinstallation ---------
Kennwörter und Pfade anpassen.

crontab -e als root.

Code: Select all

15 3,9,15,21 * * * /root/backup.sh > /PFAD/ZUM/WEBSPACE/Backup-Status.php
Dies lässt den Backup Cronjob immer um 3:15 Uhr, 9:15 Uhr, 15:15 Uhr und 21:15 Uhr also alle 6 Stunden laufen.

--------------------

Wer eine erweiterte Ausgabe der Sicherung wünscht, also die Anzeige welche Daten übertragen wurden kann den -v Parameter nutzen, dazu einfach -v hinter den rsync Befehl setzen.

Code: Select all

rsync -v
Daten welche gelöscht wurden werden sicherheitshalber in ein eigenes Verzeichniss gepackt, welches man regelmässig mal löschen sollte ^^

Wer das nicht wünscht entfernt einfach den --backup-dir Parameter im rsync Befehl.

Wenn jemand Verbesserungen hat zum Beispiel eine schönere Ausgabe der Shellrückmeldungen, darf er sie sehr gern posten :D

Vieleicht kann es der ein oder andere ja gebrauchen.

Gruß Olli

Code: Select all

#!/bin/bash

# > Nachricht an alle laufenden Teamspeak Server senden, das dass Backup gestartet wurde. <

# MESSAGE="\nServer\sstartet\sBackup\sService...\n\n-!-Kurze\sLags\ssind\smoeglich-!-"
# (echo "login serveradmin PASSWORT" ; echo "gm msg=@$MESSAGE" ; echo quit) | nc 127.0.0.1 10011

echo "<html><head><title>Backup Script by Ollithedarkness</title></head><body>"

d=`date +%d.%m.%Y-%H:%M:%S`

echo "<font color=red><b>---------------------------------------------------------------------------------------------------<br />"
echo "<b><u>Script for Avority by OlliTheDarkness</u></b><br />"
echo "---------------------------------------------------------------------------------------------------</b></font>"
echo "<br />"

echo "<font color=green><h3>Backup Script gestartet am" $d "Uhr</h3></font>"

echo "<font color=red><b><u>Tempdaten Bereinigung gestartet ...</u></b></font>"
echo "<br /><br />"

# > Löschung der tmp Verzeichnisse der User. Das ganze könnte sicherlich schöner gelöst werden aber hier ist es erstmal ausreichend. <

rm /home/users/user1/tmp/*
rm /home/users/user2/tmp/*

echo "<font color=blue>Ordner wurden geleert.</font>"

echo "<br /><br />"

echo "<font color=red><b><u>Tempdaten Bereinigung abgeschlossen !</u></b></font>"

echo "<br /><br /><hr><br />"

echo "<font color=red><b>Starte Backup der Home Verzeichnisse ...</b></font><br /><br />"

echo "<font color=blue>"
sshpass -p SSH-KENNWORT-DES-ZIELSERVERS rsync -delete -b --backup-dir=/home/backup/entfernt/home --stats -ae "ssh -p 22" /home backup@1.2.3.4://home/backup
echo "</font>"

echo "<br /><br />"
echo "<font color=red><b>... Home Verzeichnisse wurden gesichert.</b>"

echo "<br /><br /><hr><br />"
echo "<font color=red><b>Starte Backup des Backup Verzeichnisses ...</b></font><br /><br />"

echo "<font color=blue>"
sshpass -p SSH-KENNWORT-DES-ZIELSERVERS rsync --exclude=processing -delete -b --backup-dir=/home/backup/entfernt/backup --stats -ae "ssh -p 22" /backup/ backup@1.2.3.4://home/backup/KeyBackup
echo "</font>"

echo "<br /><br />"
echo "<b><font color=red>... Backup Verzeichniss gesichert.</font></b>"

echo "<br /><br /><hr><br /> "
echo "<font color=red><b>Erstelle Datenbank Sicherung ...</b></font><br />"

now="$(date +'%d_%m_%Y_%H_%M_%S')"

filename="db_backup_$now".gz

backupfolder="/root/MySQL-Dump/"

fullpathbackupfile="$backupfolder/$filename"

logfile="$backupfolder/"backup_log_"$(date +'%Y_%m')".txt

echo "<font color=green><br />Lokale Sicherung gestartet am $(date +'%d.%m.%Y um %H:%M:%S Uhr')<br /></font>"

mysqldump --user=mysqladmin --password=MySQLAdmin-KENNWORT --default-character-set=utf8 --all-databases | gzip > "$fullpathbackupfile"

echo "<font color=green><br />Lokale Sicherung abgeschlossen am $(date +'%d.%m.%Y um %H:%M:%S Uhr')</font><br /><br />"

chown root "$fullpathbackupfile"
chown root "$logfile"

echo "<font color=green>Rechte wurden angepasst.<br /><br /></font>"

find /root/MySQL-Dump/*.gz -mtime +2 -exec rm {} \;

echo "<font color=green>Backup Daten, älter als 2 Tage, wurden entfernt.<br /><br /></font>"

echo "<br /><b>Vorgang abgeschlossen am $(date +'%d.%m.%Y um %H:%M:%S Uhr')" >> "$logfile"
echo "*****************\n" >> "$logfile"
echo "<font color=orange><b>Starte Datenbanktransfer zum Backup Server ...</b></font><br /><br />"

echo "<font color=blue>"
sshpass -p SSH-KENNWORT-DES-ZIELSERVERS rsync -delete -b --backup-dir=/home/backup/entfernt/datenbanken --stats -ae "ssh -p 22" /root/MySQL-Dump/ backup@1.2.3.4://home/backup/MySQL
echo "</font>"

echo "<br /><br />"
echo "<font color=red><b>Datenbank Sicherung abgeschlossen.</font></b>"

echo "<br /><br /><hr><br />"
echo "<font color=red><b>Starte Backup der Mailordner ...</b></font><br /><br />"

echo "<font color=blue>"
sshpass -p SSH-KENNWORT-DES-ZIELSERVERS rsync -delete -b --backup-dir=/home/backup/entfernt/mails --stats -ae "ssh -p 22" /var/mail/vhosts/ backup@1.2.3.4://home/backup/MailServer
echo "</font>"

echo "<br /><br />"
echo "<font color=red><b>... Mailordner Sicherung abgeschlossen.</b></font>"
echo "<br /><br /><hr><br />"

echo "<font color=red><b>Belegter und freier Speicher auf Backup Server (Die % zeigen den belegten Speicher an).</b></font>"

echo "<br /><br /><font color=blue>"

# >> Gibt eine Rückmeldung über die Festplattenlast auf dem Backup Space aus. Der Backup User muss in der sudoers Datei entsprechend berechtigt werden den Befehl auszuführen. <<

sshpass -p SSH-KENNWORT-DES-ZIELSERVERS ssh -tt backup@1.2.3.4 "sudo /bin/df -m | grep '^/dev'"

echo "<br /><br /></font>"

echo "<font color=red><b>Berechnung abgeschlossen.</b></font>"

ae=`date +%d.%m.%Y-%H:%M:%S`

echo "<font color=green><h3>Sicherung wurde am" $ae "Uhr komplett abgeschlossen.</h3></font>"

echo "<font color=red><b>---------------------------------------------------------------------------------------------------<br />"
echo "<b><u>Script for Avority by OlliTheDarkness</u></b><br />"
echo "---------------------------------------------------------------------------------------------------</b></font>"
echo "</body></html>"

# > Nachricht an alle laufenden Teamspeak Server senden, das dass Backup beendet wurde. <

# MESSAGE="\nServer\sBackup\sService\sabgeschlossen."
# (echo "login serveradmin PASSWORT" ; echo "gm msg=@$MESSAGE" ; echo quit) | nc 127.0.0.1 10011
Teil 2
Teil 2
Attachments
Teil 1
Teil 1
Mit freundlichen Grüßen
OlliTheDarkness

**************************************************************
Helden leben lange, Legenden sterben nie

:!: World Hack Organization :!:
**************************************************************
User avatar
OlliTheDarkness
Posts: 1854
Joined: Tue 14. Aug 2018, 16:41
Location: Essen (NRW)

UPDATE: Inkrementelle Sicherung via rsync

Post by OlliTheDarkness »

UPDATE
  • Für die tmp Bereinigung wurde eine Ausgabe erstellt falls es nichts zu löschen gab.
  • Die RSync Ausgabe wird nun formatiert angezeigt.

Code: Select all


#!/bin/bash

# > Nachricht an alle laufenden Teamspeak Server senden, das dass Backup gestartet wurde. <

# MESSAGE="\nServer\sstartet\sBackup\sService...\n\n-!-Kurze\sLags\ssind\smoeglich-!-"
# (echo "login serveradmin PASSWORT" ; echo "gm msg=@$MESSAGE" ; echo quit) | nc 127.0.0.1 10011

echo "<html><head><title>Backup Script by Ollithedarkness</title></head><body>"

d=`date +%d.%m.%Y-%H:%M:%S`

echo "<font color=red><b>---------------------------------------------------------------------------------------------------<br />"
echo "<b><u>Script for Avority by OlliTheDarkness</u></b><br />"
echo "---------------------------------------------------------------------------------------------------</b></font>"
echo "<br />"

echo "<font color=green><h3>Backup Script gestartet am" $d "Uhr</h3></font>"

echo "<font color=red><b><u>Tempdaten Bereinigung gestartet ...</u></b></font>"
echo "<br /><br />"

# > Löschung der tmp Verzeichnisse der User. Das ganze könnte sicherlich schöner gelöst werden aber hier ist es erstmal ausreichend. <

butmp=$(rm /home/users/avority/tmp/*)
echo -e $butmp"<br />"
butmp=$(rm /home/users/ruhrsports/tmp/*)
echo -e $butmp"<br />"

echo "<font color=blue>Ordner wurden geleert.</font>"

echo "<br /><br />"

echo "<font color=red><b><u>Tempdaten Bereinigung abgeschlossen !</u></b></font>"

echo "<br /><br /><hr><br />"

echo "<font color=red><b>Starte Backup der Home Verzeichnisse ...</b></font><br /><br />"

echo "<textarea cols=75 rows=18 style=border-style:solid;border-width:0px;resize:none;color:blue; readonly>"
sshpass -p SSH-KENNWORT-DES-ZIELSERVERS rsync -delete -b --backup-dir=/home/backup/entfernt/home --stats -ae "ssh -p 22" /home backup@1.2.3.4://home/backup
echo "</textarea>"

echo "<br /><br />"
echo "<font color=red><b>... Home Verzeichnisse wurden gesichert.</b>"

echo "<br /><br /><hr><br />"
echo "<font color=red><b>Starte Backup des Backup Verzeichnisses ...</b></font><br /><br />"

echo "<textarea cols=75 rows=18 style=border-style:solid;border-width:0px;resize:none;color:blue; readonly>"
sshpass -p SSH-KENNWORT-DES-ZIELSERVERS rsync --exclude=processing -delete -b --backup-dir=/home/backup/entfernt/backup --stats -ae "ssh -p 22" /backup/ backup@1.2.3.4://home/backup/KeyBackup
echo "</textarea>"

echo "<br /><br />"
echo "<b><font color=red>... Backup Verzeichniss gesichert.</font></b>"

echo "<br /><br /><hr><br /> "
echo "<font color=red><b>Erstelle Datenbank Sicherung ...</b></font><br />"

now="$(date +'%d_%m_%Y_%H_%M_%S')"

filename="db_backup_$now".gz

backupfolder="/root/MySQL-Dump/"

fullpathbackupfile="$backupfolder/$filename"

logfile="$backupfolder/"backup_log_"$(date +'%Y_%m')".txt

echo "<font color=green><br />Lokale Sicherung gestartet am $(date +'%d.%m.%Y um %H:%M:%S Uhr')<br /></font>"

mysqldump --user=mysqladmin --password=MySQLAdmin-KENNWORT --default-character-set=utf8 --all-databases | gzip > "$fullpathbackupfile"

echo "<font color=green><br />Lokale Sicherung abgeschlossen am $(date +'%d.%m.%Y um %H:%M:%S Uhr')</font><br /><br />"

chown root "$fullpathbackupfile"
chown root "$logfile"

echo "<font color=green>Rechte wurden angepasst.<br /><br /></font>"

find /root/MySQL-Dump/*.gz -mtime +2 -exec rm {} \;

echo "<font color=green>Backup Daten, älter als 2 Tage, wurden entfernt.<br /><br /></font>"

echo "<br /><b>Vorgang abgeschlossen am $(date +'%d.%m.%Y um %H:%M:%S Uhr')" >> "$logfile"
echo "*****************\n" >> "$logfile"
echo "<font color=orange><b>Starte Datenbanktransfer zum Backup Server ...</b></font><br /><br />"

echo "<textarea cols=75 rows=18 style=border-style:solid;border-width:0px;resize:none;color:blue; readonly>"
sshpass -p SSH-KENNWORT-DES-ZIELSERVERS rsync -delete -b --backup-dir=/home/backup/entfernt/datenbanken --stats -ae "ssh -p 22" /root/MySQL-Dump/ backup@1.2.3.4://home/backup/MySQL
echo "</textarea>"

echo "<br /><br />"
echo "<font color=red><b>Datenbank Sicherung abgeschlossen.</font></b>"

echo "<br /><br /><hr><br />"
echo "<font color=red><b>Starte Backup der Mailordner ...</b></font><br /><br />"

echo "<textarea cols=75 rows=18 style=border-style:solid;border-width:0px;resize:none;color:blue; readonly>"
sshpass -p SSH-KENNWORT-DES-ZIELSERVERS rsync -delete -b --backup-dir=/home/backup/entfernt/mails --stats -ae "ssh -p 22" /var/mail/vhosts/ backup@1.2.3.4://home/backup/MailServer
echo "</textarea>"

echo "<br /><br />"
echo "<font color=red><b>... Mailordner Sicherung abgeschlossen.</b></font>"
echo "<br /><br /><hr><br />"

echo "<font color=red><b>Belegter und freier Speicher auf Backup Server (Die % zeigen den belegten Speicher an).</b></font>"

echo "<br /><br />"

# >> Gibt eine Rückmeldung über die Festplattenlast auf dem Backup Space aus. Der Backup User muss in der sudoers Datei entsprechend berechtigt werden den Befehl auszuführen. <<

echo "<textarea cols=75 rows=2 style=border-style:solid;border-width:0px;resize:none;color:blue; readonly>"
sshpass -p SSH-KENNWORT-DES-ZIELSERVERS ssh -tt backup@1.2.3.4 "sudo /bin/df -m | grep '^/dev'"
echo "</textarea>"

echo "<br /><br />"

echo "<font color=red><b>Berechnung abgeschlossen.</b></font>"

ae=`date +%d.%m.%Y-%H:%M:%S`

echo "<font color=green><h3>Sicherung wurde am" $ae "Uhr komplett abgeschlossen.</h3></font>"

echo "<font color=red><b>---------------------------------------------------------------------------------------------------<br />"
echo "<b><u>Script for Avority by OlliTheDarkness</u></b><br />"
echo "---------------------------------------------------------------------------------------------------</b></font>"
echo "</body></html>"

# > Nachricht an alle laufenden Teamspeak Server senden, das dass Backup beendet wurde. <

# MESSAGE="\nServer\sBackup\sService\sabgeschlossen."
# (echo "login serveradmin PASSWORT" ; echo "gm msg=@$MESSAGE" ; echo quit) | nc 127.0.0.1 10011

unset butmp
Attachments
bu1.png
Mit freundlichen Grüßen
OlliTheDarkness

**************************************************************
Helden leben lange, Legenden sterben nie

:!: World Hack Organization :!:
**************************************************************
Rainer
Posts: 178
Joined: Fri 11. Mar 2016, 23:05

Re: Inkrementelle Sicherung via rsync

Post by Rainer »

Vielen Dank dafür, sieht gut aus. Werde es mal testen.

Viele Grüße,
Rainer
Post Reply