%
% rsnapshot.tex
% Last Update: $Id$
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%% Kapitel rsnapshot %%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\chapter{rsnapshot -- Backups lokaler und entfernter Dateisysteme}


\section{Einleitung}

rsnapshot ist ein Werkzeug um Backups von lokalen oder entfernten
Dateisystemen anzulegen. Es arbeitet auf der Basis von \emph{rsync} und
\emph{SSH} und benutzt Hardlinks im Dateisystem selbst um Platz zu
sparen.

Es werden sogenannte \emph{snapshots} angelegt, die den
Dateisysteminhalt der zu sichernden Ordner zum jeweiligen Zeitpunkt
wiederspiegeln. Dabei handelt es sich um simple Kopien der zu sichernden
Ordner. Um Platz zu sparen, wird die F"ahigkeit von rsync verwendet,
sogenannte Hardlinks f"ur Dateien anzulegen, die sich seit dem letzten
Backup nicht ge"andert haben. Dadurch werden identische Dateien nicht
doppelt kopiert und Platz gespart.

\section{Backup-Intervalle und Rotation}
\label{sec:rsnapshot-backupintervalle}

rsnapshot ist an sich sehr flexibel in der Festlegung von
Backup-Intervallen. F"ur dieses eisfair-Paket wurde eine als sinnvoll
angenommene Organisation der m"oglichen Intervalle und Intervallebenen
ausgew"ahlt, um dem Nutzer die manuelle Abstimmung von Intervallen und
Ausf"uhrungszeiten der entsprechenden Cronjobs abzunehmen. Die Zeitebenen
entsprechen vertrauten Intervallen mit abnehmender Granularit"at. Im
Einzelnen existieren folgende Ebenen: \emph{hourly, daily, weekly,
monthly}.

Der Backup-Prozess l"auft so ab, dass auf der untersten Ebene 'hourly'
tats"achlich die zu sichernden Dateien kopiert werden. Dabei wird nicht
strikt st"undlich gesichert, sondern nach Wahl des Nutzers alle zwei bis
zw"olf Stunden. Dies wird "uber die Anzahl t"aglich anzulegender Snapshots
in der Variablen
\jump{RSNAPSHOTBACKUPSPERDAY}{RSNAPSHOT\_BACKUPS\_PER\_DAY}
konfiguriert. Der jeweils aktuellste Snapshot liegt im Ordner
\texttt{hourly.0}, mit jedem weiteren Lauf werden die Snapshots rotiert.
Der "alteste Snapshot der jeweiligen Ebene tr"agt die h"ochste Nummer.

Die Cronjobs der n"achsth"oheren Ebene 'daily' werden nur einmal t"aglich
ausgef"uhrt. Hier wird stets der "alteste Ordner der tieferen Ebene
'hourly' zum aktuellen Ordner \texttt{daily.0}. L"asst man beispielsweise
sechs Backups pro Tag anlegen, wird am Ende des Tages der Ordner
\texttt{hourly.5} zum neuen Ordner \texttt{daily.0}. Die Ordner der
Ebene 'daily' werden ebenso rotiert. In dieser Ebene gibt es die feste
Anzahl von sieben Ordnern. Der "alteste wird an einem vom Nutzer
festgelegten Wochentag zum Ordner \texttt{weekly.0}. Dieses Prinzip der
Rotation und Verschiebung zur n"achsth"oheren Ebene setzt sich weiter fort
bis \emph{monthly}. Das Rotationsprinzip ist unabh"angig davon ob lokale
oder entfernte Ordner gesichert werden sollen.

\section{Konfiguration}

\begin{description}

\config{START\_RSNAPSHOT}
{START\_RSNAPSHOT}
{STARTRSNAPSHOT}
{
    Zur Aktivierung des Pakets 'rsnapshot' muss diese Variable auf den
    Wert 'yes' gesetzt werden, der Wert 'no' deaktiviert das Paket.
    Der Inhalt dieser Variable bestimmt ebenfalls, ob die Cronjobs f"ur
    'rsnapshot' aktiviert werden oder nicht.

    G"ultige Werte: yes, no
}


\config{RSNAPSHOT\_BACKUP\_TO\_DIR}
{RSNAPSHOT\_BACKUP\_TO\_DIR}
{RSNAPSHOTBACKUPTODIR}
{
    "Uber diesen Parameter wird das Verzeichnis festgelegt, wo
    \emph{alle} Snapshots abgelegt werden, egal ob diese vom lokalen
    oder von entfernten Servern stammen. Es wird empfohlen die Rechte
    dieses Verzeichnisses auf \texttt{0700} zu setzen. Eine ausf"uhrliche
    Erl"auterung dazu im Abschnitt
    '\nameref{sec:rsnapshot-readonlyforusers}'.

    G"ultige Werte: vollst"andige Pfade
}


\config{RSNAPSHOT\_BACKUPS\_PER\_DAY}
{RSNAPSHOT\_BACKUPS\_PER\_DAY}
{RSNAPSHOTBACKUPSPERDAY}
{
    Dieser Parameter legt fest wie oft t"aglich rsnapshot gestartet wird.
    Die m"oglichen Werte liegen zwischen 2 und 12 und sind alle
    ganzzahlige Teiler von 24. Der Cronjob f"ur diese L"aufe von rsnapshot
    kann so derart eingerichtet werden, dass rsnapshot zu vollen Stunden
    l"auft. Dies entspricht den im Abschnitt
    '\nameref{sec:rsnapshot-backupintervalle}' erw"ahnten Jobs vom Typ
    'hourly'. Wegen der direkten Abh"angigkeit der Cronjobs von der
    Anzahl der Snapshots auf dieser Ebene, k"onnen die Zeiten nicht "uber
    das Setup-Men"u eingestellt werden, sondern werden automatisch
    festgelegt.

    Auf dem Level 'hourly' erfolgen die eigentlichen Backups durch
    Kopieren der Daten. Bei h"oheren Ebenen werden nur bereits erzeugte
    Snapshots tieferer Ebenen umbenannt bzw. verschoben. Das hei"st die
    Jobs der Ebene 'hourly' ben"otigen die meiste Zeit. Abh"angig von der
    Gr"o"se der zu sichernden Daten, sollte der Parameter daher nicht zu
    hoch eingestellt werden.

    G"ultige Werte: 2, 3, 4, 6, 8, 12

    Standardwert: 6
}


\config{RSNAPSHOT\_WEEKLY\_BACKUP\_DAY}
{RSNAPSHOT\_WEEKLY\_BACKUP\_DAY}
{RSNAPSHOTWEEKLYBACKUPDAY}
{
    Mit dieser Variable wird festgelegt wann die Rotation der
    w"ochentlichen Backups erfolgt. Zum aktuellen Snapshot der Ebene
    'weekly' (\texttt{weekly.0}) wird stets der "alteste Snapshot der
    Ebene 'daily', d.h.  konkret \texttt{daily.7}. Die m"oglichen Werte
    sind jeweils die ersten drei Buchstaben der englischen
    Wochentagsbezeichnungen in Kleinbuchstaben.

    G"ultige Werte: mon, tue, wed, thu, fri, sat, sun

    Standardwert: sat
}


\config{RSNAPSHOT\_MONTHLY\_BACKUPS\_TO\_KEEP}
{RSNAPSHOT\_MONTHLY\_BACKUPS\_TO\_KEEP}
{RSNAPSHOTMONTHLYBACKUPSTOKEEP}
{
    Dieser Parameter legt fest, wieviel monatliche Backups aufgehoben
    werden sollen.

    G"ultige Werte: numerisch

    Standardwert: 3
}


\config{RSNAPSHOT\_BACKUP\_LOCAL\_N}
{RSNAPSHOT\_BACKUP\_LOCAL\_N}
{RSNAPSHOTBACKUPLOCALN}
{
    "Uber diesen Parameter wird die Anzahl der zu sichernden lokalen
    Ordner festgelegt.

    G"ultige Werte: numerisch
}


\config{RSNAPSHOT\_BACKUP\_LOCAL\_x\_ACTIVE}
{RSNAPSHOT\_BACKUP\_LOCAL\_x\_ACTIVE}
{RSNAPSHOTBACKUPLOCALxACTIVE}
{
    Wird dieser Parameter auf 'yes' gesetzt, wird der zugeh"orige Ordner
    gesichert. Der Wert 'no' entfernt den Ordner aus dem Backup.

    G"ultige Werte: yes, no
}


\config{RSNAPSHOT\_BACKUP\_LOCAL\_x\_DIR}
{RSNAPSHOT\_BACKUP\_LOCAL\_x\_DIR}
{RSNAPSHOTBACKUPLOCALxDIR}
{
    Mit diesem Parameter wird ein lokaler Ordner festgelegt, von dem
    Snapshots angelegt werden sollen. Der Nutzer ist selbst
    verantwortlich diese Ordner sinnvoll auszuw"ahlen. Voreingestellt
    sind die Ordner \texttt{/etc/config.d}, der die eisfair-spezifischen
    Konfigurationsdateien der installierten Pakete enth"alt sowie
    \texttt{/home}, der Ordner mit den Home-Verzeichnissen der Nutzer.

    G"ultige Werte: vollst"andige Pfade
}


\end{description}


\section{Dateien wiederherstellen}

Eine automatische Wiederherstellung der Daten ist nicht vorgesehen. Da
die Dateien direkt im Dateisystem liegen, k"onnen und sollen sie einfach
mit den bekannten Bordmitteln kopiert werden.

\section{Read-Only-Zugriff f"ur normale User}
\label{sec:rsnapshot-readonlyforusers}

Es ist sehr zu empfehlen, normalen Nutzern keine Leserechte auf den
Backup-Ordner selbst zu geben. Alle Dateien dort haben die Rechte, die
sie auch im Quelldateisystem haben. Nutzer k"onnten hier Dateien "andern
oder l"oschen und so die Konsistenz des Backups zerst"oren. Daher warnt
das Paket beim Speichern der Config, wenn der in
\jump{RSNAPSHOTBACKUPTODIR}{RSNAPSHOT\_BACKUP\_TO\_DIR} angegebene
Ordner nicht \texttt{root} geh"ort und nicht die Rechte \texttt{0700}
besitzt. Um den Nutzern dennoch Nur-Lese-Zugriff auf die Snapshots zu
gew"ahren, bietet sich folgende Vorgehensweise an. To be continued \dots

