Re: Backup mit Hardlinks

Autor: Michael Lestinsky (michael_at_lestinsky.de)
Datum: 08. Jun 2003


Am 07.06.'03 schrieb Werner Holtfreter:
> rm -rf backup.3
> mv backup.2 backup.3
> mv backup.1 backup.2
> cp -al backup.0 backup.1
> rsync -a --delete /home/werner/ backup.0/

Der einzige Vorteil, den ich in dieser Methode erkennen kann ist, dass man
so direkt Zugriff auf versehentlich gelöschte Files hast. Ansonsten hat
deine Methode aber gravierende Nachteile.

Zu allererst solltest du dich nämlich fragen, was du mit dem Backup
absichern willst.

Denkbar sind etwa folgende Szenarien:

· Pilotenfehler, wie rm -rf im falschen Verzeichnis. Dafür reicht deine
  Lösung vermutlich aus.
· Plattencrash. Hier stehst du mit obiger Lösung ziemlich dumm da.
  Angesichts der Qualität aktueller Platten ein nicht ganz
  unwahrscheinliches Szenario.
· Totalverlust des Rechners, etwa durch Brand des Bürogebäudes oder
  Diebstahl

Dann solltest du noch wissen, wieviel dir deine Daten wert sind. Für
unternehmenskritische Daten, wie etwa Buchhaltungsdaten, sollte die
Anschaffung eines feuerfesten Safes für die Bänder vertretbar sein.
Für persönliche Daten ist dies Overkill, wenn es brennt hat man größere
Probleme als ein paar verlorene Mails. Der Aufwand ist also eine Frage des
Grades an Paranoia.

Angesichts der aktuellen Plattenpreise und der Tatsache, dass ich zwei
Rechner habe, bin ich dazu übergegangen meine Rechner sich auf den jeweils
anderen mit dump zu sichern. Die ersten beiden Risiken habe ich damit
abgefangen, das dritte ist im Fall des Eintritts irrelevant.

Ein Auszug meines aktuellen Backup-Skriptes sieht daher folgendermaßen
aus:

fsdump () {
    FILE="${SPOOL}/$2.${LEVEL}-dump.gz"
    dump -${LEVEL}auL -h 0 -f - $1 2>/dev/null | buffer -p 70 | gzip -5 | \
        ssh -c blowfish -l $USER $HOST "cat > ${FILE}; chflags nodump ${FILE}"
    if [ $? != 0 ]; then
        exit $?
    fi
}

Die Funktion wird aufgerufen mit der zu sichernen Partition und dem Präfix
der gesicherten Datei als Parameter. Der "-L" Parameter ist eine
Eigenheit, die mir bislang nur von FreeBSD 5.* bekannt ist, ihre Funktion
ist es ein Snapshot des Filesystems zu erzeugen, und diesen Snapshot dann
zu sichern, während sich das zugrunde liegende Dateisystem zwischendurch
ändern kann. Und der chflags-Aufruf verhindert eine Resonanzkatastrophe,
wenn die Zielpartition auf dem jeweils anderen Rechner selbst wieder auch
gesichert wird. Auf Linux-Systemen gibt es ein Kommando mit selber
Funktion, IIRC war dies chattr. Den Blowfish-Algorithmus im SSH-Aufruf
verwende ich, weil er sich als schnellster (CPU-schonenster) für meinen
Zweck herausgestellt hat.

Auf den Rechnern sind jeweils gegenseitig die SSH-Keys ausgetauscht
worden, dadurch findet keine Passwortabfrage statt und es kann alles
autonom laufen. Die Backups macht mein Cron, einmal in der Woche wird
ein Level-0-dump (Komplett-Sicherung) gemacht. An jedem anderen Tag
ein Incremental. Das ganze läuft hier seit ein paar Jahren sehr stabil
und wurde bereits mehrfach für die Wiederherstellung verwendet.

Das komplette Skript gibt es auf Anfrage per PM.

Wer keine zwei oder mehr Rechner hat, der kann auf ähnliche Weise seine
Backups auf eine separate Backup-Platte machen.

> Beim ersten Lauf wird backup.0 erzeugt, was entsprechenden
> Speicherplatz kostet. Jede weitere Backup-Rotation soll nach obiger
> Website jedoch nur noch den Platz der inzwischen eingetretenen
> Veränderungen benötigen, da mit Hardlinks (cp -l) gearbeitet wird.

Ein Vorteil von dump ist, dass es auch mit "speziellen" Files umgehen
kann, also auch mit Sockets, Fifos, Devices... aber eben auch Hardlinks.

Und die Möglichkeit durch das gesicherte Dateisystem zu browsen und die
wiederherzustellenden Dateien bequem und einzeln auszuwählen hat man
auch (restore -i ...).

Bye
Michael

-- 
I heard a definition of an intellectual, that I thought was very
interesting: a man who takes more words than are necessary to tell
more than he knows.
   -- Dwight D. Eisenhower

Dieses Archiv wurde generiert von hypermail 2.1.7 : 08. Jun 2003 CEST