Beispiel eines vollautomatisierten Backups: Unterschied zwischen den Versionen

Aus wiki.archlinux.de
Chepaz (Diskussion | Beiträge)
The beginning
 
Chepaz (Diskussion | Beiträge)
Keine Bearbeitungszusammenfassung
Zeile 6: Zeile 6:


Das hier soll eher ein Denkanstoss sein wie man Backups automatisieren kann. Es ist und soll eher keine "copy&paste" Anleitung sein und auch ein paar Gedanken über Backups selber vermitteln.
Das hier soll eher ein Denkanstoss sein wie man Backups automatisieren kann. Es ist und soll eher keine "copy&paste" Anleitung sein und auch ein paar Gedanken über Backups selber vermitteln.




Zeile 17: Zeile 16:
* der Speicher auf den das Backup soll muss (zur passenden Zeit) erreichbar sein.
* der Speicher auf den das Backup soll muss (zur passenden Zeit) erreichbar sein.
* evtl. bekommt man nicht mit das '''gar kein Backup gelaufen ist!'''
* evtl. bekommt man nicht mit das '''gar kein Backup gelaufen ist!'''




Zeile 27: Zeile 25:
* man benötigt eine Form von Monitoring. Sei es manuell oder per Mail.
* man benötigt eine Form von Monitoring. Sei es manuell oder per Mail.


Aus diesen Punkten kann man z.B. folgendes entwickeln:
* ein Backupserver (optional mit RAIDx) der nur bei Bedarf läuft Speicherplatz bereitstellt.
* Clients die nicht immer am Netz sind aber automatisch ihr Backup darauf ablegen.
===Erste Maßnahmen:===
==Server==
* Auf dem Server richtet man zuerst Shares ein, z.B. [[Nfs]] oder [[Samba]] den die Clients nutzen sollen.
==Client==
* Die Clients bekommen ein Share vom Server das sie automounten. Das kann man per [https://wiki.archlinux.org/index.php/Autofs autofs] erledigen oder auch durch [[systemd]] machen lassen.
* Auf den Clients wird [[rsnapshot]] eingerichtet welches in dem automount sein Backup anlegt.
Jetzt hat man schonmal ein rudimentäres Setup für sein Backup geschaffen. Es fehlt nur noch der Schritt zur Automation.
===Weitere Maßnahmen aka Automatisierung & Stromsparen===
==Server==
Um Strom zu sparen richtet man [[Server bei inaktivität im Netz schlafen legen]] ein.




Aus diesen Punkten kann man z.B. folgendes entwickeln:
==Client==
 
Wie in [[Server bei inaktivität im Netz schlafen legen]] beschrieben installiert man auf den Clients wol um den Server auf zu wecken wenn er schläft.
Dann benötigt man noch folgendes Script welches man z.B. unter /root/scripts/auto-backup.sh ablegt und ausführbar macht:
 
  #!/bin/bash
 
  # config server details here
  wakethismac="38:ea:a7:a4:a4:9c"
  bkuphost="cubox"
  bkuphosttimeout="12" # is a multiple of 10s e.g. 3*10 fail after 30s
 
  # parametercheck
  if [ $# -ne 1 ]; then
      echo "Too much or too few parameters."
      echo "Use one of: <hourly | daily | weekly | monthly>"
      exit 1
  fi
 
  if [ $1 == "hourly" ]; then
      bkuptype=$1
  elif [ $1 == "daily" ]; then
      bkuptype=$1
  elif [ $1 == "weekly" ]; then
      bkuptype=$1
  elif [ $1 == "monthly" ]; then
      bkuptype=$1
  elif [ $1 == "yearly" ]; then
      bkuptype=$1
  elif [ $1 == "backup" ]; then
      bkuptype=$1
  else
      echo "Use one of: <hourly | daily | weekly | monthly | yearly | backup>"
      exit 1
  fi
 
  # wake up your backupserver
  wol $wakethismac &>/dev/null
 
 
  # check if destination is reachable
  statusfile="/tmp/$!.status"
  echo "false" > $statusfile
 
  while [ $(grep false $statusfile) ]; do
      ping -c1 $bkuphost &>/dev/null
      pingstatus=$?
 
      if [ $pingstatus -eq "0" ]; then
          echo "true" > $statusfile
      fi
     
      # avoid pingspam and quit if backuphost isn't reachable
      if [ $pingstatus -eq "1" ]; then
          if [ $bkuphosttimeout -eq "0" ]; then
              echo "Destination unreachable, NO BACKUP MADE!"
              exit 404
          fi
          sleep 10
          ((bkuphosttimeout--))
      fi
  done
 
 
  # run the backup
  rsnapshot -q $bkuptype
 
 
  # check if rsnypshot was successful
  if [ $? -eq "0" ]; then
      rm $statusfile
  else
      echo "Backup failed, take a look at the rsnapshot logs!"
  fi
 
  chmod +x /root/scripts/auto-backup.sh


TODO
TOBECONTINUED

Version vom 11. Januar 2015, 18:08 Uhr

„Beispiel eines vollautomatisierten Backups“ wurde von Chepaz (Diskussion) als in Bearbeitung markiert. Um Bearbeitungskonflikte zu vermeiden, kontaktiere Chepaz (Diskussion) bitte, bevor du den Artikel bearbeitest.


Beispiel eines vollautomatisierten Backups

Einleitung

Das hier soll eher ein Denkanstoss sein wie man Backups automatisieren kann. Es ist und soll eher keine "copy&paste" Anleitung sein und auch ein paar Gedanken über Backups selber vermitteln.


Backups zu automatisieren hat fast nur Vorteile:

  • man vergisst sie nicht.
  • man muss sie nicht von Hand anstossen.
  • man kann sie, einmal eingerichtet, solange vergessen bis man sie braucht ;)

Nachteile gibt es aber auch:

  • der Speicher auf den das Backup soll muss (zur passenden Zeit) erreichbar sein.
  • evtl. bekommt man nicht mit das gar kein Backup gelaufen ist!


Vorüberlegung

  • Vorraussetzung um ein Backup zu automatisieren ist natürlich das es keinerlei manueller Intervention bedarf. Das bedeutet schonmal das sämtliche Geräte bei denen man ein Kabel einstecken müsste oder die man manuell einschalten muss aussen vor bleiben.
  • Allerdings will man evtl. auch nicht das ein Gerät (Server) 24/7 läuft und zu 95% Strom sinnlos in Wärme umwandelt.
  • der Speicherort sollte "extern" liegen, d.h. nicht auf dem Gerät von dem man ein Backup macht! Wie weit man "extern" ausdehnt sei jedem selbst überlassen (Physikalisch auf jeden Fall. Aber ob Räumlich im sinne von Raum oder sogar Gebäude... feel free ;) )
  • man benötigt eine Form von Monitoring. Sei es manuell oder per Mail.


Aus diesen Punkten kann man z.B. folgendes entwickeln:

  • ein Backupserver (optional mit RAIDx) der nur bei Bedarf läuft Speicherplatz bereitstellt.
  • Clients die nicht immer am Netz sind aber automatisch ihr Backup darauf ablegen.


Erste Maßnahmen:

Server

  • Auf dem Server richtet man zuerst Shares ein, z.B. Nfs oder Samba den die Clients nutzen sollen.


Client

  • Die Clients bekommen ein Share vom Server das sie automounten. Das kann man per autofs erledigen oder auch durch systemd machen lassen.
  • Auf den Clients wird rsnapshot eingerichtet welches in dem automount sein Backup anlegt.


Jetzt hat man schonmal ein rudimentäres Setup für sein Backup geschaffen. Es fehlt nur noch der Schritt zur Automation.


Weitere Maßnahmen aka Automatisierung & Stromsparen

Server

Um Strom zu sparen richtet man Server bei inaktivität im Netz schlafen legen ein.


Client

Wie in Server bei inaktivität im Netz schlafen legen beschrieben installiert man auf den Clients wol um den Server auf zu wecken wenn er schläft. Dann benötigt man noch folgendes Script welches man z.B. unter /root/scripts/auto-backup.sh ablegt und ausführbar macht:

 #!/bin/bash
 
 # config server details here
 wakethismac="38:ea:a7:a4:a4:9c"
 bkuphost="cubox"
 bkuphosttimeout="12" # is a multiple of 10s e.g. 3*10 fail after 30s
 
 # parametercheck
 if [ $# -ne 1 ]; then
     echo "Too much or too few parameters."
     echo "Use one of: <hourly | daily | weekly | monthly>"
     exit 1
 fi
 
 if [ $1 == "hourly" ]; then
     bkuptype=$1
 elif [ $1 == "daily" ]; then
     bkuptype=$1
 elif [ $1 == "weekly" ]; then
     bkuptype=$1
 elif [ $1 == "monthly" ]; then
     bkuptype=$1
 elif [ $1 == "yearly" ]; then
     bkuptype=$1
 elif [ $1 == "backup" ]; then
     bkuptype=$1
 else
     echo "Use one of: <hourly | daily | weekly | monthly | yearly | backup>"
     exit 1
 fi
 
 # wake up your backupserver
 wol $wakethismac &>/dev/null 
 
 
 # check if destination is reachable
 statusfile="/tmp/$!.status"
 echo "false" > $statusfile
 
 while [ $(grep false $statusfile) ]; do
     ping -c1 $bkuphost &>/dev/null
     pingstatus=$?
 
     if [ $pingstatus -eq "0" ]; then
         echo "true" > $statusfile
     fi
     
     # avoid pingspam and quit if backuphost isn't reachable
     if [ $pingstatus -eq "1" ]; then
         if [ $bkuphosttimeout -eq "0" ]; then
             echo "Destination unreachable, NO BACKUP MADE!"
             exit 404
         fi
         sleep 10
         ((bkuphosttimeout--))
     fi
 done
 
 
 # run the backup 
 rsnapshot -q $bkuptype
 
 
 # check if rsnypshot was successful
 if [ $? -eq "0" ]; then
     rm $statusfile
 else
     echo "Backup failed, take a look at the rsnapshot logs!"
 fi
 chmod +x /root/scripts/auto-backup.sh

TOBECONTINUED