Fragen bezüglich Datensicherung und Serversicherung

M. Zink

New Member
Hallo,

bis jetzt habe ich es immer so gemacht, dass ich alle Webs von meinem Server ein mal pro Nacht jeweils in ein Tar packen lasse und dazu die DB Dumps und dann das ganze mit einem kleinen Shell Skript auf meinen Backup FTP schiebe. Das ist mir aber irgendwie noch zu wenig. Zumal ich zwischen den einzelnen Webs auch relativ große Zeitabstände habe damit der Server nicht 5 Webs gleichzeitig verarbeiten muss und dadurch dauert das Sichern des ganzen Servers momentan 6 Stunden. Gibts da nicht irgend eine bessere Lösung?

Zumal ich den Server selbst auch gar nicht sichere. Ich dachte mir immer im Notfall ist so ein Server in 2 bis 3 Stunden eingerichtet und dann eben die Webs zurück sichern und fertig. Nur was wenn ich grade nicht da bin und somit der Server eine ganze Zeit lang still steht? Absolut prima wäre wenn ich im Notfall nur in die Rescue Console müsste, dort irgendwie eine Hand voll Befehle ausführe und dann die Rücksicherung automatisch abläuft. Mal eben 5 Minuten irgendwelche Befehle ausführen kann ich sogar wenn ich bei einem Kunden bin aber sicher keine Server Installation.

Würdet ihr da auf die Möglichkeiten von Linux zurück greifen oder aber eine Software einsetzen? Ich habe ja schon nach einem HowTo für Acronis gefragt aber die Software kostet immerhin irgendwas um die 500 Euro und sofern das nicht sein muss würde ich es auch bleiben lassen. Zumal ich bei Acronis auch die Möglichkeit hätte aus einem gemounteten Verzeichnis die Dateien vom Server zu ziehen. Ich müsste nur ein Laufwerk vom Server irgendwie mounten und fertig. Stichwort WebDAV vielleicht?

Wie sichert ihr eure Server um keinen Schiffsbruch zu erleiden?
 

M. Zink

New Member
Ich muss dieses Thema noch mal aufgreifen da es bei mir jetzt wieder aktuell darum geht die richtige Sicherung mit den richtigen Tools zu erstellen.

Grundsätzlich denke ich inzwischen ist es nicht nötig einen Server komplett zu sichern. Wenn die Hardware kaputt geht muss man immer davon ausgehen das sich die Hardware ggf. ändert oder zumindest mal auch trotz sicherung nicht einfach so wieder läuft. Da ich dann keine Lust hätte 5 Tage zu suchen wieso der Server beim Booten hängen bleibt und verzweifelt Hilfe suche gehe ich einfach vom schlimmsten Fall aus und das heißt wenn irgendwas kaputt geht und sei es nur die Blende vom DVD Rom ist der Server kaputt und ich fange bei 0 an. Das heißt den Server neu aufsetzen dauert dank eures total guten HowTo ca. 1 Stunde. Die Daten vom Backup Space auf den Server holen dauert paar Minuten und dann eben die ganzen Web User anlegen und Datensicherungen wieder entpacken und in die Datenbank packen.

So, und damit ich jetzt auf dem neuen Server sicher sein kann, dass ich alles richtig gemacht habe sage ich euch ganz genau was ich mache und wie ich es mache damit ihr mir sagen könnt wo ich was total unnötig/falsch/schlecht/doof/sonstwie mache und wie ich es richtiger machen sollte.

1. Ich habe in der /etc/crontab jede menge Einträge angelegt, mittels denen ein mal das Verzeichnis des Web Users gepackt wird und zum anderen die zu dem User gehörenden Datenbanken "gedumpt" werden.
# web6
0 2 * * * root mysqldump -pXXXXXX web6_db3 > /backup/web6_aktuell.sql
1 2 * * * root mysqldump -pXXXXXX web6_db2 > /backup/web6_wbb3test.sql
2 2 * * * root mysqldump -pXXXXXX web6_db1 > /backup/web6_wbb2.sql
5 2 * * * root tar -czf /backup/web6.tar.gz /var/www/web6/
Bereits hier habe ich ein kleines Problem. Wenn ich bzw. der User web6 nun eine weitere DB anlegt wird diese natürlich nicht mit gesichert. Erst wenn der User mich darum bittet wird die DB von mir manuell eingetragen und gesichert. Gibt es eine Möglichkeit einfach alle DB's des Users zu sichern? Aber nicht in einem großen Dump sondern für jede DB ein Dump?

2. Die erzeugten Dateien werden ganz am Ende der Prozedur auf meinen Backup Space geschoben.
# Backups auf den Backup Webspace schieben 8:00
0 8 * * * root /root/tools/ftp_backup.sh
Das Shell Skript hat vor 5 Jahren mal ein guter Bekannter geschrieben (oder irgendwo gefunden) und ich bin mir nicht ganz sicher ob das so optimal ist. Das heißt was kann schon optimaler sein als die Dateien auf den Backup zu schieben. Aber wenn ich mal an die Backups ran müsste bin ich nicht mal sicher wie ich da dran komme. Das heißt von dem Shell Skript habe ich keine Variante die die Dateien vom Backup Space in ein Verzeichnis kopiert. Genau hier würde ich also das erst mal schon fremde Hilfe brauchen da der Backup Space nur von meinem Server aus angesprochen werden kann und nicht via FlashFXP z.B. (Hetzner Server mit Backup Space). Wie geht es also in dem Fall weiter? Könnte mir jemand helfen das Shell Skript so zu erweitern, dass ich auf einem frisch installierten Server z.B. einfach mit "ftp_backup.sh restore ./*" oder sonst wie erreiche, dass der gesamte Inhalt des Backup Space in dem aktuellen Ordner kopiert wird? Hier mal das Shell Skript (natürlich ohne meine persönlichen Infos wie PW usw.)
#!/bin/sh
statusCol="echo -ne \\033[130G"
statusColorOK="echo -ne \\033[1;32m"
statusColorFailed="echo -ne \\033[1;31m"
statusColorNormal="echo -ne \\033[0;39m"

StatusOK ( ) {
${statusCol}
echo -n "[ "
${statusColorOK}
echo -n "Done"
${statusColorNormal}
echo " ]"
return 0
}
#
StatusFailed ( ) {
echo -ne "\a"
${statusCol}
echo -n "["
${statusColorFailed}
echo -n "FAILED"
${statusColorNormal}
echo "]"
return 0
}

for file in /backup/* ; do
echo -ne "\tSaving file ${file} -> ftp://server1.meinedomain.de:****@192.168.1.250:21/`basename ${file}`"
curl -T ${file} -u user : passwort ftp://192.168.1.250
retval=$?
if [ ${retval} == 0 ] ; then
StatusOK
else
StatusFailed
fi
done
3. Ein mal im Monat kopiere ich alle Dateien zusätzlich lokal auf meinen PC. Ob dies nötig ist oder nicht weiß ich nicht aber ich schaue mir aus Zeitgründen die Logs höchstens ein mal die Woche an und bekomme dadurch nicht unbedingt mit wenn sich z.B. eine Festplatte verabschiedet. Sollte dies der Fall sein und im schlimmsten Fall auch das Backup Space nicht mehr laufen hätte ich so zumindest die Möglichkeit diese Daten zu nutzen um den Server wieder ans Netz zu bringen und könnte dann versuchen aktuellere Daten zu bekommen.

Was sagt ihr zu meiner Methode? Reicht aus oder ist grotten schlecht? Was sollte ich unbedingt anders machen?
 

M. Zink

New Member
Ich muss dieses Thema noch mal aufgreifen da es bei mir jetzt wieder aktuell darum geht die richtige Sicherung mit den richtigen Tools zu erstellen.

Grundsätzlich denke ich inzwischen ist es nicht nötig einen Server komplett zu sichern. Wenn die Hardware kaputt geht muss man immer davon ausgehen das sich die Hardware ggf. ändert oder zumindest mal auch trotz sicherung nicht einfach so wieder läuft. Da ich dann keine Lust hätte 5 Tage zu suchen wieso der Server beim Booten hängen bleibt und verzweifelt Hilfe suche gehe ich einfach vom schlimmsten Fall aus und das heißt wenn irgendwas kaputt geht und sei es nur die Blende vom DVD Rom ist der Server kaputt und ich fange bei 0 an. Das heißt den Server neu aufsetzen dauert dank eures total guten HowTo ca. 1 Stunde. Die Daten vom Backup Space auf den Server holen dauert paar Minuten und dann eben die ganzen Web User anlegen und Datensicherungen wieder entpacken und in die Datenbank packen.

So, und damit ich jetzt auf dem neuen Server sicher sein kann, dass ich alles richtig gemacht habe sage ich euch ganz genau was ich mache und wie ich es mache damit ihr mir sagen könnt wo ich was total unnötig/falsch/schlecht/doof/sonstwie mache und wie ich es richtiger machen sollte.

1. Ich habe in der /etc/crontab jede menge Einträge angelegt, mittels denen ein mal das Verzeichnis des Web Users gepackt wird und zum anderen die zu dem User gehörenden Datenbanken "gedumpt" werden.
# web6
0 2 * * * root mysqldump -pXXXXXX web6_db3 > /backup/web6_aktuell.sql
1 2 * * * root mysqldump -pXXXXXX web6_db2 > /backup/web6_wbb3test.sql
2 2 * * * root mysqldump -pXXXXXX web6_db1 > /backup/web6_wbb2.sql
5 2 * * * root tar -czf /backup/web6.tar.gz /var/www/web6/
Bereits hier habe ich ein kleines Problem. Wenn ich bzw. der User web6 nun eine weitere DB anlegt wird diese natürlich nicht mit gesichert. Erst wenn der User mich darum bittet wird die DB von mir manuell eingetragen und gesichert. Gibt es eine Möglichkeit einfach alle DB's des Users zu sichern? Aber nicht in einem großen Dump sondern für jede DB ein Dump?

2. Die erzeugten Dateien werden ganz am Ende der Prozedur auf meinen Backup Space geschoben.
# Backups auf den Backup Webspace schieben 8:00
0 8 * * * root /root/tools/ftp_backup.sh
Das Shell Skript hat vor 5 Jahren mal ein guter Bekannter geschrieben (oder irgendwo gefunden) und ich bin mir nicht ganz sicher ob das so optimal ist. Das heißt was kann schon optimaler sein als die Dateien auf den Backup zu schieben. Aber wenn ich mal an die Backups ran müsste bin ich nicht mal sicher wie ich da dran komme. Das heißt von dem Shell Skript habe ich keine Variante die die Dateien vom Backup Space in ein Verzeichnis kopiert. Genau hier würde ich also das erst mal schon fremde Hilfe brauchen da der Backup Space nur von meinem Server aus angesprochen werden kann und nicht via FlashFXP z.B. (Hetzner Server mit Backup Space). Wie geht es also in dem Fall weiter? Könnte mir jemand helfen das Shell Skript so zu erweitern, dass ich auf einem frisch installierten Server z.B. einfach mit "ftp_backup.sh restore ./*" oder sonst wie erreiche, dass der gesamte Inhalt des Backup Space in dem aktuellen Ordner kopiert wird? Hier mal das Shell Skript (natürlich ohne meine persönlichen Infos wie PW usw.)
#!/bin/sh
statusCol="echo -ne \\033[130G"
statusColorOK="echo -ne \\033[1;32m"
statusColorFailed="echo -ne \\033[1;31m"
statusColorNormal="echo -ne \\033[0;39m"

StatusOK ( ) {
${statusCol}
echo -n "[ "
${statusColorOK}
echo -n "Done"
${statusColorNormal}
echo " ]"
return 0
}
#
StatusFailed ( ) {
echo -ne "\a"
${statusCol}
echo -n "["
${statusColorFailed}
echo -n "FAILED"
${statusColorNormal}
echo "]"
return 0
}

for file in /backup/* ; do
echo -ne "\tSaving file ${file} -> ftp://server1.meinedomain.de:****@192.168.1.250:21/`basename ${file}`"
curl -T ${file} -u user : passwort ftp://192.168.1.250
retval=$?
if [ ${retval} == 0 ] ; then
StatusOK
else
StatusFailed
fi
done
3. Ein mal im Monat kopiere ich alle Dateien zusätzlich lokal auf meinen PC. Ob dies nötig ist oder nicht weiß ich nicht aber ich schaue mir aus Zeitgründen die Logs höchstens ein mal die Woche an und bekomme dadurch nicht unbedingt mit wenn sich z.B. eine Festplatte verabschiedet. Sollte dies der Fall sein und im schlimmsten Fall auch das Backup Space nicht mehr laufen hätte ich so zumindest die Möglichkeit diese Daten zu nutzen um den Server wieder ans Netz zu bringen und könnte dann versuchen aktuellere Daten zu bekommen.

Was sagt ihr zu meiner Methode? Reicht aus oder ist grotten schlecht? Was sollte ich unbedingt anders machen?
 

Werbung

Top