Rsync: Das beste Backupsystem

ArticleCategory: [Choose a category, translators: do not translate

SystemAdministration

AuthorImage:[Here we need a little image from you]

Brian Hone

TranslationInfo:[Author + translation history. mailto: or

original in en Brian Hone 

en to de J�rgen Pohl

AboutTheAuthor:[A small biography about the author]

Brian Hone ist Systemadministrator und Softwareentwickler bei E-Ink Corp. In seiner Freizeit surft er in eiskaltem Wasser oder er h�ngt an Felsw�nden.

Abstract:[Here you write a little summary]

Datensicherung ist eine der schwierigsten und vernachl�ssigsten Aufgaben der Systemadministration. Es ist auch eine der wichtigsten Massnahmen. Es ist der letzte Schutz gegen Hardwareausfall, Sicherheitsverletzungen und die gr�sste aller Gefahren: die Benutzer. Obwohl es viele Backupsysteme gibt, die Tausende von Dollar kosten und auf teuren Bandlaufwerken mittels fehlerhafter propriet�rer Software archivieren, gibt es eine bessere L�sung: Rsync und ein preiswertes Festplatten-Array.

ArticleIllustration:[One image that will end up at the top of the article]

RSYNC Backup

ArticleBody:[The main part of the article]

Das Problem

Ich k�nnte hier eine lange Liste der Gr�nde auff�hren, warum Datensicherung der Alptraum des Systemadministrators ist - falls Sie ein Administrator sind, ist das aber wahrscheinlich �berfl�ssig. Einige der Gr�nde sind: teure Hardware (die meistens nicht funktioniert), teure Software - ein Alptraum f�r das Management - und viele verschwendete Stunden, um Mehrfachversionen von Dateien zu restaurieren. Der H�hepunkt ist die meistens fehlende Priorit�t der Gesch�ftsleitung f�r Sicherheitskopien, bis zum unausweichlichen Moment, wenn diese dringend gebraucht werden. Falls Sie Datensicherung/Wiederherstellungen durchgef�hrt haben, hatten Sie bestimmt ein �hnliches Gespr�ch:

User:"Ich habe eine Datei verloren, ich brauche die unbedingt zur�ck." "
SysAdmin:"Ok, was ist der Name?"
User:Weiss ich nicht, ich glaube es war ein 'e' im Namen."
SysAdmin:"Ok, in welchem Verzeichnis war sie?"
User:Keine Ahnung, es k�nnte eines von diesen dreien sein.
SysAdmin: "*Seufz*. K�nnen Sie sich erinnern, wann Sie die Datei zuletzt gebraucht haben?"
User:"Ach...ich glaube, es war an einem Donnerstag im Februar oder im April. Was ist das Problem? Ich dachte ihr Leute habt eine Datensicherung f�r diese Art von Problem."

Die Rsync-L�sung

Rsync ist eine sehr wirksame Implementation eines h�bschen kleinen Algorithmus. Seine Hauptwirkung liegt in der F�higkeit, ein Dateisystem wirkungsvoll zu spiegeln. Mittels Rsync ist es einfach, ein System einzurichten, das eine aktuelle Kopie eines Dateisystems mittels einer flexiblen Anordnung von Netzwerkprotokollen (wie nfs, smb oder ssh) erzeugt. Au�erdem kann ein auf Rsync basierendes Datensicherungssystem, alte Kopien von ge�nderten oder entfernten Dateien. Rsync hat zu viele Eigenschaften, um sie alle in diesem Artikel aufzuf�hren. Ich empfehle w�rmstens, an dieser Stelle nachzulesen rsync.samba.org.

Das System

Kurz gesagt: unser System besteht aus einer billigen Linuxbox mit einigen preiswerten Festplatten und einem kleinen Shellscript, das rsync aufruft. [Fig 1] Wenn wir eine Datensicherung durchf�hren, befehlen wir rsync ein Verzeichnis namens 'YY-DD-MM' als Speicher f�r inkrementelle �nderungen einzurichten. Als n�chstes durchsucht rsync die Server - von denen Sicherheitskopien hergestellt werden sollen - auf Datei�nderungen. Ist eine Datei ge�ndert worden, wird die alte Version in das Inkrementellverzeichnis kopiert und dann die Datei im Hauptdatensicherungsverzeichnis �berschrieben. [Fig 2]

RSYNC Backup Process

Im Allgemeinen betr�gt das Volumen der �nderungen des Tages nur einen kleinen Prozentsatz des gesamten Dateisystems. Bei mir betr�gt die typische durchschnittliche Gr�sse zwischen 0,5 % bis 1%. Mit einigen Backup-Festplatten mit der doppelten Speicherkapazit�t unserer Server k�nnen wir schrittweise Sicherungskopien f�r 50 - 100 Tage unterbringen. Wenn die Festplatten voll sind, tauschen wir sie mit neuen aus und lagern die alten an einem sicheren Ort. In der Praxis ist es m�glich, inkrementelle Backups von �ber sechs Monaten auf Festplatten zu speichern. Falls Platz auf einem anderen Server vorhanden ist, k�nnen Sie die inkrementellen Backups dort speichern, bevor Sie die Festplatten wechseln, auf diese Weise k�nnen Sie die Anzahl der inkrementellen Backups beliebig gro� ansetzen.



How Incremental Files are Handled

Die Vorteile: Einfache Wiederherstellung nach einem Totalverlust auch f�r einzelne Dateien

Zur�ck zu unserer imagin�ren Unterhaltung. Anstelle eines umst�ndlichen Bandspeichersystems warten die inkrementellen Backups der letzten sechs Monate friedlich in unserer Linuxbox. Mit unser bevorzugten Kombination aus locate/find/grep finden wir alle Dateien unseres imaginaren Users, die ein 'e' enthalten und welche die Zeitmarkierung eines Donnerstags im Februar oder im April enthalten. Diese Dateien laden wir in des Users Homeverzeichnis. Das Problem, herauszufinden, welche Version die richtige ist, ist damit zu meiner bevorzugten Art von Problemen geworden: das von einem anderen.

Als n�chstes unser Lieblingsszenario - Totalverlust. Nehmen wir an, wir verlieren einen gr�sseren nfs/samba-Server. Von unserer gesicherten Sambakonfiguration k�nnen wir unseren Backupserver als Read-Only-Ersatz innerhalb von Minuten einsetzen. Probieren wir das mal mit dem Magnetband.

Wie sieht der Vergleich Rsync/Festplatten- Backup gegen�ber Backup auf Magnetband aus

  Magnetband-Backup Rsync
Kosten Sehr hoch Niederig
Volle Datensicherung Schnell Schnell
Teilweise Datensicherung Schnell Schnell
Volles Wiederherstellen Sehr langsam, evtl. von mehreren B�ndern Schnell - es ist alles auf der Festplatte
Datei wiederherstellen Langsam, evtl. von mehreren B�ndern, richtige Version oft schwer zu finden. Sehr schnell - es ist alles auf der Festplatte und wir haben die volle Wirkung der UN*X Suchwerkzeuge wie, grep und locate
Totalverlust Die einzige Option ist die vollst�ndige Wiederherstellung Kann schnellstens in einen Dateiserver umgestellt werden.

Die Werkzeuge

Es gibt viele M�glichkeiten, es aufzusetzen. Alle Werkzeuge sind Open-Source, sie sind in den meisten Distributionen enthalten und sie sind sehr flexibel. Nachfolgend beschreiben wir eine m�gliche Einrichtung - es gibt aber noch viele andere Wege.

Das Script aufsetzen

Die Grundform dieses Skripts kam von der Rsync-Webseite. Er besteht eigentlich nur aus einem Befehl:

rsync --force --ignore-errors --delete --delete-excluded --exclude-from=exclude_file --backup --backup-dir=`date +%Y-%m-%d` -av

Die Hauptoptionen hier sind:

Das folgende Skript kann man jeden Abend mit cron unter Linux ausf�hren. Um das Skript jeden Abend um 11 Uhr zu starten, benutzen wir das Kommando "crontab -e" und dann geben wir das folgende ein:

0 23 * * * /path/to/your/script

Der Skript

Hier ist mein Shellskript, um das alles zusammenzufassen. Dabei gibt es wieder viele M�glichkeiten. Das folgende Script ist nur eine Implementation.

#!/bin/sh
#########################################################
# Script to do incremental rsync backups		            
# Adapted from script found on the rsync.samba.org  	  
# Brian Hone 3/24/2002					                        
# This script is freely distributed under the GPL	      
#########################################################

##################################
# Configure These Options        
##################################

###################################
# mail address for status updates
#  - This is used to email you a status report
###################################
MAILADDR=your_mail_address_here

###################################
# HOSTNAME
#  - This is also used for reporting
###################################
HOSTNAME=your_hostname_here

###################################
# directory to backup
# - This is the path to the directory you want to archive
###################################
BACKUPDIR=directory_you_want_to_backup

###################################
# excludes file - contains one wildcard pattern per line of files to exclude
#  - This is a rsync exclude file.  See the rsync man page and/or the 
#    example_exclude_file
###################################
EXCLUDES=example_exclude_file

###################################
# root directory to for backup stuff
###################################
ARCHIVEROOT=directory_to_backup_to

#########################################
# From here on out, you probably don't  #
#   want to change anything unless you  #
#   know what you're doing.             #
  
######################################### 
# directory which holds our current datastore
CURRENT=main

# directory which we save incremental changes to
INCREMENTDIR=`date +%Y-%m-%d`

# options to pass to rsync
OPTIONS="--force --ignore-errors --delete --delete-excluded \
 --exclude-from=$EXCLUDES --backup --backup-dir=$ARCHIVEROOT/$INCREMENTDIR -av"

export PATH=$PATH:/bin:/usr/bin:/usr/local/bin

# make sure our backup tree exists
install -d $ARCHIVEROOT/$CURRENT

# our actual rsyncing function
do_rsync()
{
   rsync $OPTIONS $BACKUPDIR $ARCHIVEROOT/$CURRENT
}

# our post rsync accounting function
do_accounting()
{
   echo "Backup Accounting for Day $INCREMENTDIR on $HOSTNAME:">/tmp/rsync_script_tmpfile
   echo >> /tmp/rsync_script_tmpfile
   echo "################################################">>/tmp/rsync_script_tmpfile
   du -s $ARCHIVEROOT/* >> /tmp/rsync_script_tmpfile
   echo "Mail $MAILADDR -s $HOSTNAME Backup Report < /tmp/rsync_script_tmpfile"
   Mail $MAILADDR -s $HOSTNAME Backup Report < /tmp/rsync_script_tmpfile
   echo "rm /tmp/rsync_script_tmpfile" 
   rm /tmp/rsync_script_tmpfile
}

# some error handling and/or run our backup and accounting
if [ -f $EXCLUDES ]; then
	if [ -d $BACKUPDIR ]; then
		# now the actual transfer
		do_rsync && do_accounting
	else
		echo "cant find $BACKUPDIR"; exit
	fi
	else
		echo "cant find $EXCLUDES"; exit
fi

Ressourcen