Wie Backup durch Backupserver auslösen

Alle weiteren Dienste, die nicht in die drei oberen Foren gehören.
Antworten
FriscoDebian
Beiträge: 7
Registriert: 24.06.2012 10:30:51

Wie Backup durch Backupserver auslösen

Beitrag von FriscoDebian » 24.06.2012 10:42:38

Hallo zusammen,

ich nutze schon seit Jahren ein "Snapshot-Backup", funktioniert super. Ein von mir angemieteter Webserver, auf dem debian 64bit läuft, erstellt via faubackup das Backup auf meinem Backupserver (über ssh mit Schlüsseln). Der Backupserver ist mein Rechner zu Hause. Das soll auch so bleiben, ich möchte keinen externen Backupserver bzw. etwas an der grundlegenden Architektur ändern - aus Gründen ;-)

Der Haken ist natürlich, das mein Rechner zu Hause manchmal nicht an ist, wenn der Webserver sein Backup erstellen möchte (per cron gesteuert).

Nun zu meiner Frage: Kann nicht der Backupserver ein Kommando an den Webserver schicken, dass dieser sein Backup erstellen und rüber schieben soll? Also statt bisher auf dem Webserver per cron gestartet nun durch den Backupserver per remote-Kommando gestartet?

Geht bestimmt, aber wie?

Viele Grüße
Frisco

Benutzeravatar
Natureshadow
Beiträge: 2157
Registriert: 11.08.2007 22:45:28
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Radevormwald
Kontaktdaten:

Re: Wie Backup durch Backupserver auslösen

Beitrag von Natureshadow » 24.06.2012 11:04:23

Hi,

per SSH?

-nik

FriscoDebian
Beiträge: 7
Registriert: 24.06.2012 10:30:51

Re: Wie Backup durch Backupserver auslösen

Beitrag von FriscoDebian » 24.06.2012 23:14:15

geht's ein bißchen genauer? ;-)

Cae
Beiträge: 6349
Registriert: 17.07.2011 23:36:39
Wohnort: 2130706433

Re: Wie Backup durch Backupserver auslösen

Beitrag von Cae » 24.06.2012 23:30:59

Naja, das ist doch ein bisschen offensichtlich: Du verwendest ohnehin schon SSH, da kann der lokale Server nach einem Reboot auch den Webserver über SSH triggern. Zum Beispiel in der /etc/rc.local, etwas in der Richtung

Code: Alles auswählen

ssh user@host 'nohup mybackup.sh &' &
Bzw. sollte man das noch eleganter lösen, dass nicht nach jedem Reboot vom Target der Webserver gebackupt wird. ;)

Zum Beispiel könnte das Cron-gesteuerte Backupscript bei Fehlschlag eine Datei dobackup an-touch-en und später, beim Aufruf über SSH, feststellen, ob es sie gibt. Falls ja, Backup, rm -f dobackup. Falls nicht, war das letzte Backup erfolgreich.

Gruß Cae
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.

—Bruce Schneier

uname
Beiträge: 12474
Registriert: 03.06.2008 09:33:02

Re: Wie Backup durch Backupserver auslösen

Beitrag von uname » 25.06.2012 08:47:27

Der Haken ist natürlich, das mein Rechner zu Hause manchmal nicht an ist, wenn der Webserver sein Backup erstellen möchte (per cron gesteuert).
Dann erscheint es sinnvoll das Backup durchzuführen wenn der Rechner an ist. Da Backup sollte somit vom Client ausgehen.

Schau dir doch mal

http://wiki.ubuntuusers.de/rsnapshot
http://wiki.ubuntuusers.de/Skripte/Backup_mit_RSYNC

an. Das zweite Script habe ich mal geschrieben, da ich nicht extra "rsnapshot" installieren wollte ;-) Es zeigt recht eindrucksvoll wie man "rsync" mit "ssh" nutzt. Option wäre "FROMSSH" und der Aufruf wäre auf dem Client. Du nutzt Debian auf deinem Client?

Benutzeravatar
Faber38
Beiträge: 381
Registriert: 21.03.2009 23:28:20
Wohnort: Elsdorf

Re: Wie Backup durch Backupserver auslösen

Beitrag von Faber38 » 28.07.2012 09:57:11

oder du erstellst eine abfrage ob der client am netz ist...

ich erledige dies mit folgendem script..

Code: Alles auswählen

ipPrefix="192.168.10";
ipsToCheck="4";
var_online="true";                                     # "wahr oder nicht wahr" setzen
Datum=`/bin/date +%Y-%m-%d`                            # Datum setzen
Uhrzeit=`/bin/date +%H:%M`                             # Uhrzeit setzen
yes_ping="Client - Erfolgreich online"                 # Text online definieren
no_ping="Client - offline"                             # Text offline definieren

for ((i=0; i<15; i++))
do
for ipToCheck in $ipsToCheck; do
    if ping -q -c1 ${ipPrefix}.${ipToCheck} > /dev/null 2>&1; then
        var_online="false";
        sh /etc/users_sic.conf;
        Datum=`/bin/date +%Y-%m-%d`                            # Datum setzen
        Uhrzeit=`/bin/date +%H:%M`                             # Uhrzeit setzen
        printf "$Datum | $Uhrzeit -        $yes_ping\n" >> /var/log/message_update ;
        i=16 ;
    fi;
done;

if [ "$var_online" = "true" ]; then
         Datum=`/bin/date +%Y-%m-%d`                            # Datum setzen
         Uhrzeit=`/bin/date +%H:%M`                             # Uhrzeit setzen
         printf "$Datum | $Uhrzeit -       $no_ping\n" >> /var/log/message_update ; 
         sleep 1h ;
fi;
done;
das ganze wird im cronjob jede Std, von 8:00 bis 20:00 aufgerufen..
ist der rechner einmal online wird ein script aufgerufen welches jede menge rsync-befehle enthällt.

funktioniert natürlich nur bei fester IP-adresse

Cae
Beiträge: 6349
Registriert: 17.07.2011 23:36:39
Wohnort: 2130706433

Re: Wie Backup durch Backupserver auslösen

Beitrag von Cae » 28.07.2012 17:31:39

Hinweis zum Skript: Du rechnest oben Uhrzeit und Datum aus, ohne es vor der Schleife nochmal zu verwenden. Unten genauso. Und %Y-%m-%d lässt sich kürzer als %F schreiben. Das i=16, um aus der äußeren Schleife zu kommen, ist unschön, zumal die ((…))-Konstruktion oben die Bash braucht. Schöner ist

Code: Alles auswählen

for i in $(seq 0 14); do
        for fnord in a b c d; do
                [ $i -gt 10 ] && break 2
        done
done
Das sei nur als Beispiel gedacht, sobald $fnord 11 Mal auf a, b, c und d gesetzt wurde, werden beide Schleifen beendet.
var_online braucht nicht unbedingt auf die Strings "true" und "false" gesetzt zu werden, das kann man effizienter testen mit

Code: Alles auswählen

foo=1 # oder *irgendwas*
[ $foo ] && echo gesetzt
unset foo
if [ $foo ]; then
        echo gesetzt
else
        echo nicht gesetzt
fi
Die printfs sind überflüssig und können durch das schnellere echo ersetzt werden, insbesondere, weil du printf "…\n" verwendest. Das lässt sich auch mit echo -n "…" erreichen. printf ist dagegen pratisch, wenn man zum Beispiel eine definierte Breite braucht:

Code: Alles auswählen

$ printf "test = %4i;\ntest = %4i;\n" 1337 42
test = 1337;
test =   42;
Auch ist nicht auf Anhieb klar, dass sh /etc/users_sic.conf das ist, was bei einem Online-Client passiert.

Aber sonst, äh, ein tolles Skript. ;)

Gruß Cae
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.

—Bruce Schneier

Benutzeravatar
Faber38
Beiträge: 381
Registriert: 21.03.2009 23:28:20
Wohnort: Elsdorf

Re: Wie Backup durch Backupserver auslösen

Beitrag von Faber38 » 30.07.2012 07:52:19

wow...
danke für die Tipps...ich gelobe hier feierlich mich zu bessern ! :hail: :THX:
werde ich mir mal genauer anschauen...
und einbauen !

Antworten