

	\documentclass[a4paper,11pt]{article}
	\usepackage{ngerman}
	\usepackage[latin1]{inputenc}
	\setlength\parskip{\medskipamount}
	\setlength\parindent{0pt}
	\begin{document}

	
 % backups
 % Copyright Johnny Graber
 % Lizenz: GFDL
 % 
 % $Name: $
 % $Revision: 1.10.2.8 $
 % $Source: /cvsroot/selflinux/tutorial/adminbasics/backups/backups,v $
 % SelfLinux-0.7.2
 %
 % Diese Datei ist Teil von SelfLinux http://www.selflinux.de
 %
 %%% $Id: backups,v 1.10.2.8 2002/12/07 17:38:14 jgraber Exp $

	\title{Backups}


	
	    \author{Johnny Graber}
	    %\url{mailto:selflinux@jgraber.ch}
    

	\maketitle

	
	
	%\ref{../index.tex}
	
		%\ref{adminbasics1.tex}
		Elementare Systemverwaltung
	\ref{backups}

    \par{Layout}
    Alexander Fischer
	    %\url{mailto:Selflinux@tbanus.org}
    
    	\par{Lizenz}
	GFDL
 
	\tableofcontents{}

        
	\section{Begriffe} \label{d30e51}
        
  

   \subsection{Backup} \label{d30e56}
        
    

     
  \par
  
Mit Backup wird die Datensicherung bezeichnet. Der Sinn dieser
Sicherung ist es, in möglichst kurzer Zeit wieder über all seine
Daten zu verfügen, sollten diese durch einen äusseren Einfluss,
einen Bedienungs- oder Programmfehler zerstört worden sein. \linebreak 
Man muss sich schon vorher Gedanken über die Datensicherung
machen, denn wenn man das Backup brauchen könnte, ist es bekanntlich
zu spät für eine Sicherung.
     
   

   \subsection{Vollständiges Backup} \label{d30e67}
        
    

     
  \par
  
Bei einem vollständigen Backup werden alle zu sichernden Daten auf
einmal gesichert. Der Vorteil liegt darin, das all diese
Daten in einem Durchgang zurückgespielt werden können, sollte
dies notwendig werden.
Bei den heutigen Standardinstallationen der Distributionen
wird man aber ein Problem haben, sein ganzes System auf ein
Medium zu schreiben. Einen Streamer haben die wenigsten
Heimanwender und auf eine CD passt ein komplettes System selten.
     
     
     
  \par
  
Zudem dauert ein ganzes Backup ziemlich lange. Da man meist
ungeduldig ist, kommt die lange Dauer des Backups als
Ausrede gerade recht. Wieso sollte man auch täglich unzählige
Dateien speichern, die man schon seit Wochen nicht mehr
angefasst hat?
     
   
   
   \subsection{Differentielles Backup} \label{d30e79}
        
    
    
     
  \par
  
Bei einem differentiellen Backup werden nur die seit dem letzten
vollständigen Backup geänderten Dateien gesichert. Dies spart
sowohl Zeit als auch Speicherplatz.
     
     
     
  \par
  
Bei einer Wiederherstellung der Daten muss man aber mit mehreren
Medien arbeiten. Einerseits das vollständige Backup einspielen und
danach noch das differentielle Backup.
     
   
   
   \subsection{Inkrementelles Backup} \label{d30e91}
        
    
     
     
  \par
  
Beim inkrementellen Backup werden nur die Dateien gespeichert,
die sich seit dem letzten Backup, geändert haben. Daher eignet
sich das inkrementelle Backup besonders für die tägliche
Sicherung.
     
   
   
   \subsection{Backup-Medien} \label{d30e100}
        
    
     
     
  \par
  
Als Backup-Medium kann man alles verwenden, auf das man Daten
speichern kann. Dies reicht von der Floppy-Diskette über Zips,
CDs, DVD, Magnetbänder bis hin zu Festplatten.
Schafft man sich ein neues Backup System an, sollte man sich
vorher Gedanken über die notwendige Kapazität machen. Dadurch
erspart man sich einen Fehlkauf und hat auch beim Betrieb
weniger Ärger. Jedes mal für ein paar Dateien extra noch ein
weiteres Medium anfangen nervt einen sehr bald.
     
   
 \section{Backup-Strategien} \label{d30e131}
        
  

   \subsection{Was soll gesichert werden?} \label{d30e136}
        
    

     
  \par
  
Schlussendlich will man bei einem Datenverlust sein System
möglichst schnell wieder herstellen können. Daher ergibt
es sich, das man {\bf alle persönlichen Daten und Einstellungen}
sichern muss. Arbeitet man an {\bf Projekten} oder mit {\bf Datenbanken},
muss man diese auch ins Backup mit einbeziehen.
     
   

   \subsection{Was braucht man nicht zu sichern?} \label{d30e154}
        
    

     
  \par
  
Es muss nichts gesichert werden, das man schon auf anderen CDs hat.
Es macht wenig Sinn, bei jedem vollen Backup auch noch alle Programme,
die mit der Distribution mitgeliefert wurden, zu sichern. \linebreak 
Braucht man für seine Arbeit aber zusätzliche Programme oder hat
diese selber modifiziert, sollte man diese neben dem Backup auf eine
Spezielle CD sichern. Diese Programme ändern sich ja kaum und wenn
sie einmal gesichert sind, kann man diese wieder herstellen.
     
   

   \subsection{Wie geht man vor? Ein Beispiel} \label{d30e165}
        
    

     
  \par
  
Wir nehmen an, dass wir 5 Dateien haben ({\bf a}, {\bf b}, {\bf c}, {\bf d} und {\bf e}) und
uns 8 CD-RWs zur Verfügung stehen.
     

     
  \par
  
Am {\bf Montag} machen wir ein {\bf volles Backup} und sichern dabei {\bf alle
Dateien} auf unsere {\bf CD1}. \linebreak 
Am {\bf Dienstag} ändern wir die Dateien {\bf b}, {\bf c} und {\bf d}. Da unsere Arbeit
sehr wichtig ist, machen wir ein {\bf differentielles Backup} und
sichern dabei die Dateien {\bf b}, {\bf c} und {\bf d} auf die {\bf CD2}. \linebreak 
Am {\bf Mittwoch} ändern wir die Dateien {\bf d} und {\bf e}. Würden wir nun ein
weiteres differentielles Backup machen, müssten wir die Dateien
{\bf b}, {\bf c}, {\bf d} und {\bf e} sichern, da sich diese seit dem vollständigen
Backup geändert haben. Machen wir stattdessen ein {\bf inkrementelles
Backup}, sichern wir nur die Differenzen zum letzten Backup - also
die Dateien {\bf d} und {\bf e} auf {\bf CD3}.
     

     
  \par
  
Mit dem inkrementellen Backup fahren wir nun täglich weiter und
fangen jeden Tag eine neue CD an, bis wir am {\bf nächsten Montag}
wieder ein volles Backup machen. Wichtig ist dabei, das wir dies
auf die CD8 und nicht auf die CD1 machen. Geht beim Backup etwas
schief, ist sonst unser volles Backup zerstört und alle unsere
anderen CDs nutzen uns nichts mehr.
     

     
  \par
  
Sobald die CD8 korrekt geschrieben wurde, sind die CDs 1-7 nicht
mehr notwendig um das System wieder aufzusetzen. CD1 sollte man
vorerst bei Seite legen und erst wieder für das nächste volle
Backup verwenden. CD 2-7 können für die inkrementellen Backups der
nächsten Tage verwendet werden und helfen dabei beim
Einsparen von Kosten.
     

     
  \par
  
So machen wir an den ersten 8 Tagen 8 Backups und brauchen 8 CDs.
Dies mag auf den ersten Blick übertrieben erscheinen. Aber wieviel
kostet ein Rohling? Wie wichtig ist die Arbeit und wie viel Zeit
steckt dahinter? \linebreak 
Berechnet man die Kosten eines Datenverlustes (Erstellungszeit *
Stundenansatz), überwiegt diese Summe um Längen den Preis von
8 CD-RWs. Zumal diese 8 CDs ja wiederverwendet werden können.
     
   

   \subsection{komprimierte Archive} \label{d30e282}
        
    

     
  \par
  
Man stellt sich bald einmal die Frage, ob man die Archive nicht
komprimieren könnte. Dadurch spart man zwar Platz, doch wird das
Archiv anfälliger für Fehler. \linebreak 
Werden beim Schreiben des komprimierten Archivs nur wenige Bits
falsch kopiert, kann das ganze Archiv unbrauchbar werden. Daher
sollte man sicher sein, das beim Schreiben keine Fehler passieren.
     
   
 \section{tar} \label{d30e297}
        
  

   
  \par
  
Mit {\bf tar} können einzelne Dateien oder ganze Verzeichnisse in
ein ein Archiv gepackt werden. Da {\bf tar} für grössere Systeme
geschrieben wurde, versucht es standardmässig auf ein
Bandlaufwerk zu schreiben. \linebreak 
Dies stellt kein grosses Problem dar, da man mit der Option
{\bf -f} den Datenstrom in eine Datei ({\bf f} für File) umleiten kann.
Daher wird im Verlauf des Textes tar immer auch mit {\bf -f}
aufgerufen.
   

   
  \par
  
{\bf tar} ist zwar ein älteres Programm, doch ist es sehr weit
verbreitet und unter vielen Systemen verfügbar. So kann man
davon ausgehen, {\bf tar} immer zur Verfügung zu haben.
   

    \subsection{Vollständiges Backup} \label{d30e331}
        
     

      
  \par
  
       
        \begin{tt} \begin{scriptsize} user@linux / \$ 
tar [Optionen] [Ziel] [Dateien und Verzeichnisse]
	 \end{scriptsize} \end{tt} \linebreak 
       
      

      
  \par
  
Will man eine neue Datei erstellen, genügen die Optionen
{\bf -cf}. Dabei werden aber die vorangestellten {\bf /} der Pfadangaben
entfernt. Will man die Dateien im Rahmen eines Restore
zurückschreiben, braucht man aber die ganzen Pfade. Diese müssen
beim Restore entweder angegeben werden oder beim Erstellen durch
die Option {\bf -P} explizit angefordert werden:
      

      
  \par
  
       
        \begin{tt} \begin{scriptsize} user@linux / \$ 
tar -Pcf /mnt/disk2/backup-1.tar /home/
	 \end{scriptsize} \end{tt} \linebreak 
       
      

      
  \par
  
Mit diesem Aufruf werden alle Dateien unter {\bf /home} in die Datei
{\bf /mnt/disk2/backup-1.tar} gespeichert. Die gesamten Pfade bleiben
erhalten, doch werden diese relativ von dem Ort aus eingetragen,
von dem man {\bf tar} aufruft.
      

      
  \par
  
{\bf Hinweis:} \linebreak 
Durch die Verwendung von {\bf -P} kann man die Dateien nur an ihren
ursprünglichen Ort wiederherstellen. Will man sich alle Möglichkeiten
offen halten, sollte man daher auf {\bf -P} verzichten.
      
    

    \subsection{Inkrementelles Backup} \label{d30e392}
        
     

      
  \par
  
{\bf tar} wurde vor allem für ganze Backups gemacht. Es gibt aber
einige mehr oder weniger einfache Möglichkeiten, inkrementelle
Backups zu machen.
      

      
  \par
  
Die einfachste Form ist wohl die Verwendung der Option {\bf -g} beim
ersten vollen Backup. \linebreak 
Dabei werden Informationen über die gesicherten Dateien in
eine externe Datei zeitstempel geschrieben:
      
      
      
  \par
  
       
        \begin{tt} \begin{scriptsize} user@linux / \$ 
tar -vcf /mnt/disk2/backup-1.tar -g zeitstempel /home/
	 \end{scriptsize} \end{tt} \linebreak 
       
      

      
  \par
  
Beim inkrementellen Backup lautet der Aufruf bis auf den Archivnamen
gleich, doch sichert tar diesmal nur die Dateien, die sich seit dem
vollen Backup geändert haben.
      

      
  \par
  
Man kann {\bf tar} auch mitteilen, das es nur Dateien sichern soll, die sich
seit einem bestimmten Datum geändert haben. Bei diesem Aufruf werden
die seit dem 1. November modifizierten Dateien getart:
      
      
      
  \par
  
       
        \begin{tt} \begin{scriptsize} user@linux / \$ 
tar -N 2002-11-01 -Pcf /mnt/disk2/backup-1.tar /home/
	 \end{scriptsize} \end{tt} \linebreak 
       
      
      
      
  \par
  
Will man ein eigenes kleines Backupscript schreiben, das einem
alle Dateien sichert, die neuer als 5 Tage sind, kann man {\bf date}
zur Mitarbeit bewegen:
      
      
      
  \par
  
       
        \begin{tt} \begin{scriptsize} user@linux / \$ 
tar -N \$(date -d ''now 5 days ago'' +%Y-%b-%d) -Pcf /mnt/disk2/backup-1.tar /home/
	 \end{scriptsize} \end{tt} \linebreak 
       
      
    

    \subsection{komprimierte Backups} \label{d30e457}
        
     

      
  \par
  
Man kann ein nach dem zuvor erklärten Verfahren komprimieren.
Dazu genügt der Aufruf von {\bf gzip}:
      

      
  \par
  
       
        \begin{tt} \begin{scriptsize} user@linux / \$ 
gzip backup-1.tar
	 \end{scriptsize} \end{tt} \linebreak 
       
      

      
  \par
  
Danach befindet sich im Verzeichnis eine Datei mit dem Namen
backup-1.tar.gz. Um die Datei zu dekomprimieren, ruft man an
der Stelle von {\bf gzip} das Tool {\bf gunzip} auf:
      

      
  \par
  
       
        \begin{tt} \begin{scriptsize} user@linux / \$ 
gunzip backup-1.tar.gz
	 \end{scriptsize} \end{tt} \linebreak 
       
      

      
  \par
  
Es gibt bei {\bf tar} aber auch eine integrierte Methode. Mit der
Option {\bf -z} wird {\bf gzip} durch {\bf tar} aufgerufen und es gibt keinen
Umweg über einen zweiten Befehl. Neben {\bf gzip} kann auch {\bf bzip2}
für die Komprimierung verwendet werden. Dafür dient die
Option {\bf -j}.
      

      
  \par
  
       
        \begin{tt} \begin{scriptsize} user@linux / \$ 
tar -zcf /mnt/disk2/backup-1.tar /home/
	 \end{scriptsize} \end{tt} \linebreak 
	\begin{tt} \begin{scriptsize} user@linux / \$ 
ls
	 \end{scriptsize} \end{tt} \linebreak 
	\begin{tt} \begin{scriptsize} backup-1.tar.gz\end{scriptsize} \end{tt} \linebreak
       
      
    

    \subsection{Überprüfen} \label{d30e538}
        
     

      
  \par
  
Eine der wichtigsten Schritte beim Anlegen eines Backups ist
dessen Überprüfung. Mit der Option {\bf -d} geht dies sehr einfach,
sofern man noch in dem Verzeichnis ist, in dem man {\bf tar} gestartet
hatte und die Option {\bf -P} verwendete:
      

      
  \par
  
       
        \begin{tt} \begin{scriptsize} user@linux / \$ 
tar -df /mnt/disk2/backup-1.tar
	 \end{scriptsize} \end{tt} \linebreak 
       
      

      
  \par
  
Wenn alles stimmt, gibt {\bf tar} keine Fehlermeldung aus. Hat man
{\bf -P} nicht verwendet, muss man {\bf tar} den Pfad mitgeben:
      

      
  \par
  
       
        \begin{tt} \begin{scriptsize} user@linux / \$ 
tar -C / -df /mnt/disk2/backup-1.tar
	 \end{scriptsize} \end{tt} \linebreak 
       
      

      
  \par
  
Diese Option geht ebenfalls, wenn man zwischenzeitlich das
Verzeichnis gewechselt hat. \linebreak 
Will man wissen, was alles im Archiv ist, genügt ein {\bf -t}
      

      
  \par
  
       
        \begin{tt} \begin{scriptsize} user@linux / \$ 
tar -tf /mnt/disk2/backup-1.tar
	 \end{scriptsize} \end{tt} \linebreak 
        \begin{tt} \begin{scriptsize} /home/jg/datei1\end{scriptsize} \end{tt} \linebreak
	\linebreak\begin{tt} \begin{scriptsize} /home/jg/datei2\end{scriptsize} \end{tt} \linebreak
	\linebreak\begin{tt} \begin{scriptsize} /home/jg/datei3\end{scriptsize} \end{tt} \linebreak
	\linebreak\begin{tt} \begin{scriptsize} /home/jg/datei4\end{scriptsize} \end{tt} \linebreak
       
      
    

    \subsection{Restore} \label{d30e615}
        
     

      
  \par
  
Nachdem das Archiv ordentlich geschrieben und geprüft wurde,
kann man sich erst einmal ruhig zurücklehnen. Da aber
erfahrungsgemäss immer etwas passieren kann, sollte man auch
etwas über die Wiederherstellung wissen. Die dafür notwendige
Option ist {\bf -x} (extract = extrahieren). Damit man weiss was
gerade passiert, gibt es {\bf -v} (verbose = wortreich):
      

      
  \par
  
       
        \begin{tt} \begin{scriptsize} user@linux / \$ 
tar -xvzf /mnt/disk2/backup-1.tar.gz
	 \end{scriptsize} \end{tt} \linebreak 
       
      

      
  \par
  
oder mit zusätzlicher Pfadangabe und einem nicht komprimierten
Archiv:
      

      
  \par
  
       
        \begin{tt} \begin{scriptsize} user@linux / \$ 
tar -C / -xvf /mnt/disk2/backup-1.tar
	 \end{scriptsize} \end{tt} \linebreak 
       
      
    
 \section{cpio} \label{d30e655}
        
  

   
  \par
  
{\bf cpio} (copy in/out) ist {\bf tar} sehr ähnlich, doch kann es im Gegensatz
dazu mit beschädigten Archiven umgehen. So kann man den unbeschadeten
Teil des Archivs meistens noch retten. \linebreak 
Allerdings funktioniert man {\bf cpio} nur auf Festplatten mit dem
Dateisystem ext2.
   

    \subsection{Vollständiges Backup} \label{d30e677}
        
     

      
  \par
  
Will man die zu sichernden Dateien an {\bf cpio} übergeben, müssen diese
nach einem speziellen Muster mitgeteilt werden. Pro übergebene
Zeile erwartet {\bf cpio} einen Dateinamen. Daher verwendet man am Besten
eine Pipe:
      

      
  \par
  
       
        \begin{tt} \begin{scriptsize} user@linux / \$ 
ls *.tex | cpio -o \verb+>+ /mnt/disk2/backup-2
	 \end{scriptsize} \end{tt} \linebreak 
       
      

      
  \par
  
Bei dieser Befehlskette werden zuerst alle TeX-Dateien (Endung .tex)
aufgelistet und an {\bf cpio} übergeben. Mit der Option {\bf -o} wird die Datei
backup-2 erstellt.
      

      
  \par
  
Der Nachteil beim Aufruf über {\bf ls} ist, das man keine Unterverzeichnisse
sichern kann. Verwendet man stattdessen find, kann man dieses Problem
mit der Option {\bf -depth} umgehen:
      

      
  \par
  
       
        \begin{tt} \begin{scriptsize} user@linux / \$ 
find /home/jg/ -maxdepth 2 -depth | cpio -o \verb+>+ /mnt/disk2/backup-3
	 \end{scriptsize} \end{tt} \linebreak 
       
      
    

    \subsection{Inkrementelles Backup} \label{d30e731}
        
     

      
  \par
  
Mit {\bf find} kann man sich nicht nur Verzeichnisebenen anzeigen lassen,
sondern Dateien auch auf ihre letzte Modifikation prüfen. Daher genügt
die Ergänzung des vorhin verwendeten Befehls um {\bf -mtime -5} um alle
Dateien zu erhalten, die in den letzten 5 Tagen geändert wurden:
      

      
  \par
  
       
        \begin{tt} \begin{scriptsize} user@linux / \$ 
find /home/jg/ -mtime -5 -maxdepth 2 -depth | cpio -o \verb+>+ /mnt/disk2/backup-4
	 \end{scriptsize} \end{tt} \linebreak 
       
      

      
  \par
  
Für weitere Optionen von {\bf find} empfielt sich ein Blick in 
{\bf man find}.
      
    

    \subsection{Überprüfen} \label{d30e764}
        
     

      
  \par
  
Ein Nachteil von {\bf cpio} ist die fehlende direkte Überprüfung der
gesicherten Dateien. Um einen wirklichen Vergleich zu machen,
müsste man die Dateien in ein anderes Verzeichnis entpacken und
mit Hilfe von {\bf diff} sicherstellen, das die Dateien korrekt sind.
      

      
  \par
  
Es gibt aber wenigstens eine Möglichkeit, sich die Dateien im
Archiv anzeigen zu lassen:
      

      
  \par
  
       
        \begin{tt} \begin{scriptsize} user@linux / \$ 
cpio -itvI /mnt/disk2/backup-2
	 \end{scriptsize} \end{tt} \linebreak 
	\begin{tt} \begin{scriptsize} -rw-r--r--\verb+  +\verb+  +1 jg\verb+  +\verb+  +\verb+  +jg\verb+  +\verb+  +\verb+  +\verb+  +\verb+  + 100 Nov\verb+  +5 20:03 /home/jg/test1.tex \linebreak -rw-r--r--\verb+  +\verb+  +1 jg\verb+  +\verb+  +\verb+  +jg\verb+  +\verb+  +\verb+  +\verb+  +\verb+  +\verb+  +91 Nov\verb+  +1 19:24 /home/jg/test2.tex \linebreak -rw-r--r--\verb+  +\verb+  +1 jg\verb+  +\verb+  +\verb+  +jg\verb+  +\verb+  +\verb+  +\verb+  +\verb+  + 212 Nov\verb+  +4 17:05 /home/jg/test3.tex \linebreak -rw-r--r--\verb+  +\verb+  +1 jg\verb+  +\verb+  +\verb+  +jg\verb+  +\verb+  +\verb+  +\verb+  +\verb+  +\verb+  +69 Nov\verb+  +5 15:38 /home/jg/test4.tex\end{scriptsize} \end{tt} \linebreak
       
      

      
  \par
  
Da die Option {\bf i} das Archiv auspacken würde, setzt 
man um dies zu Verhindern ein {\bf t} davor. Über 
{\bf I} teilt man das Verzeichnis mit und dank {\bf v}
werden die Dateirechte mit ausgegeben.
      
    
    
    \subsection{Zurückspielen} \label{d30e809}
        
     

      
  \par
  
       
        \begin{tt} \begin{scriptsize} user@linux / \$ 
cpio -id \verb+<+ /mnt/disk2/backup-2
	 \end{scriptsize} \end{tt} \linebreak 
       
      
      
      
  \par
  
Damit werden die Dateien aus dem Archiv an ihren Platz zurück
kopiert, sofern die dort vorhandenen Dateien nicht identisch
oder älter sind.
      
    
 
	\ref{inhalt.tex}


	\end{document}
	
