Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung Nächste Überarbeitung Beide Seiten der Revision | ||
invis_server_wiki:dasi [2017/10/03 10:36] flacco [Aufräumen] |
invis_server_wiki:dasi [2019/01/09 10:05] flacco [Daten wiederherstellen] |
||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
====== invis Server Datensicherung ====== | ====== invis Server Datensicherung ====== | ||
+ | |||
+ | invis-Server verfügen über ein mehrschichtiges Datensicherungssystem, bestehend aus regelmäßigen internen Sicherungen, kombiniert mit einer externen Sicherung auf externe Festplatten oder einen Datensicherungsserver. | ||
+ | |||
+ | Für die Überwachung und ggf. die Durchführung der externen Datensicherung ist primär der Betreiber eines invis-Servers verantwortlich. Dies ist beispielsweise der Geschäftsführer einen Unternehmens und nicht etwa der Systemadministrator. Selbstverständlich können diese Aufgaben innerhalb eines Unternehmens delegiert werden, sprich die Verantwortlichkeit für Durchführung und Überwachung an Mitarbeiter weitergegeben werden. Dies sollte in jedem Falle vertraglich geregelt werden. Einen externen IT-Dienstleister für die Datensicherung verantwortlich zu machen ist eher unsinnig. Er (wenn vorhanden) sollte allerdings in die Überwachung der Datensicherung herangezogen werden. | ||
+ | |||
+ | Auch wenn die Verantwortlichkeit für die Datensicherung innerhalb eines Unternehmens an einen oder mehrere Mitarbeiter delegiert wurde, sollte es ureigenstes Interesse der Geschäftsleitung sein die damit zusammenhängenden Aufgaben regelmäßig zu kontrollieren. Bezüglich der Haftung bei Schäden durch Datenverlust steht die Geschäftsleitung bzw. der Unternehmer immer in der Mitverantwortung. Versäumnisse bei der Datensicherung werden rechtlich stets als Mitverschulden im Sinne des § 254 (Mitverschulden) BGB bewertet. | ||
+ | |||
+ | Für bilanzierungspflichtige Unternehmen schreibt der Gesetzgeber eine tägliche Datensicherung vor. Dies ist gerade bei Verwendung von externen Festplatten als Sicherungsziel, die dann auch täglich gewechselt werden müssen zu bedenken. Mit einem Server als Sicherungsziel ist das durch Automation natürlich einfacher zu realisieren. | ||
+ | |||
+ | Unabhängig vom gewählten Sicherungsziel gilt, dass eine Datensicherung nur dann als Datensicherung gilt, wenn die gesicherten Daten räumlich getrennt von den Originaldaten aufbewahrt werden. Dabei meint "räumlich getrennt" zumindest einen anderen Brandabschnitt. Dies kann auch in kleineren Büros die nicht über getrennte Brandabschnitte verfügen durch Aufbewahrung der Sicherungsmedien in einem Brandschutztresor gewährleistet werden. In einem solchen Fall kommt ein lokal betriebener Datensicherungsserver allerdings nicht in Frage. Sie können ihn ja kaum im Tresor betreiben... | ||
+ | |||
+ | ===== interne Sicherungen ===== | ||
+ | |||
+ | Interne Sicherungen sind zeitgesteuerte Sicherungen wichtiger Datenbestände. Während der Installation werden verschiedene Datensicherungsaufgaben angelegt: | ||
+ | |||
+ | ^ Aufgabe / Script ^ Zyklus ^ Bemerkung ^ | ||
+ | ^ kbackup | Mo, Mi, Fr, So jeweils um 3:00 Uhr | Sicherung der Kopano-Konten / ermöglicht das wiederherstellen einzelner Objekte (Mailordner, Mails usw. z.B. bei versehentlichem Löschen | | ||
+ | ^ kdbdump | Di, Do, Sa jeweils um 3:00 Uhr | Sicherung der Kopano Datenbank / dient der Wiederherstellung der Kopano Datenbank im Notfall | | ||
+ | ^ dwdatasnapshot | Samstags um 1:30 Uhr | Sicherung des Dokuwiki-Datenbestandes | | ||
+ | ^ alldump | Samstags um 6:00 Uhr | Sicherung aller Datenbanken des Servers mit Ausnahme der Kopano-Datenbank | | ||
+ | ^ adbackup | Täglich um 23:30 | Sicherung des Active Directory / ab invis-Server 14.0 | | ||
+ | |||
+ | Die genannten Zyklen sind die Voreinstellungen nach der Installation eines invis-Servers. Sie lassen sich individuell anpassen. Vorgenommen werden die Einstellungen in: <file>/etc/cron.d/invis.cron</file> | ||
+ | |||
+ | Diese Sicherungen erfolgen zunächst auf die lokalen Festplatten des Servers selbst und sind in der Freigabe Archiv im Unterverzeichnis "sicherungen" zu finden. Damit diese Sicherungen nicht bis ins unermessliche Platz belegen werden die verschiedenen Sicherungsverzeichnisse zyklisch bereinigt. Das maximale Alter der Sicherungen ist in "Tagen" in <file>/etc/invis/invis.conf</file> einstellbar und in der Regel auf 21 oder 42 Tage voreingestellt. Ältere Sicherungen werden gelöscht. | ||
+ | |||
+ | Alle internen Sicherungen werden von der externen Sicherung mit erfasst. | ||
+ | |||
+ | //**Hinweis:** Alle in der Tabelle genannten Sicherungsscripts können auch manuell auf der Kommandozeile des Servers aufgerufen werden.// | ||
+ | |||
+ | Einige, aber nicht alle der Sicherungs-Scripts versenden im Fehlerfall eine Wanrmail an eine während der Installation des Servers voreingestellt Mail-Adresse. Unabhängig davon sollten Sie regelmäßig einen Blick in die zuvor genannten Sicherungsverzeichnisse werden und kontrollieren, ob die Sicherungen wie gewünscht erfolgen. | ||
+ | ===== externe Sicherungen ===== | ||
Basierend auf unserer Empfehlung eine invis-Server Installation unter Nutzung von Logical-Volume-Management durchzuführen haben wir ein eigenes Datensicherungswerkzeug entwickelt, welches Datensicherung durch Kombination von LV-Snapshots und "//**rdiff-backup**//" durchführt. | Basierend auf unserer Empfehlung eine invis-Server Installation unter Nutzung von Logical-Volume-Management durchzuführen haben wir ein eigenes Datensicherungswerkzeug entwickelt, welches Datensicherung durch Kombination von LV-Snapshots und "//**rdiff-backup**//" durchführt. | ||
Zeile 5: | Zeile 37: | ||
Als Sicherungsziele kommen wahlweise oder in Kombination externe USB bzw. eSATA Festplatten und ein gesonderter Sicherungsserver in Frage. | Als Sicherungsziele kommen wahlweise oder in Kombination externe USB bzw. eSATA Festplatten und ein gesonderter Sicherungsserver in Frage. | ||
- | Sicherungsserver können von **//rdiff-backup//** direkt via "rsync over SSH" oder SMB-Freigaben angesprochen werden. Bei der Nutzung von SMB-Freigaben gehen leider die Besitz- und Zugriffsrechte der gesicherten Dateien verloren. | + | Sicherungsserver können von **//rdiff-backup//** direkt via "rsync over SSH" oder SMB-Freigaben angesprochen werden. |
+ | |||
+ | //**Achtung:** Bei der Nutzung von SMB-Freigaben gehen leider die Besitz- und Zugriffsrechte der gesicherten Dateien verloren.// | ||
Beim Einsatz externer Festplatten nutzen wir die Möglichkeiten der UDEV-Hardware Verwaltung unter Linux. Die Sicherungsplatten werden dem Server bekannt gemacht und er startet die Datensicherung automatisch, wenn "genau diese" Festplatten mit dem Server verbunden werden. Andere Festplatten lösen keine Sicherung aus. Wichtig zu wissen, ist dass das Verbinden der Festplatte der auslösende Moment ist. | Beim Einsatz externer Festplatten nutzen wir die Möglichkeiten der UDEV-Hardware Verwaltung unter Linux. Die Sicherungsplatten werden dem Server bekannt gemacht und er startet die Datensicherung automatisch, wenn "genau diese" Festplatten mit dem Server verbunden werden. Andere Festplatten lösen keine Sicherung aus. Wichtig zu wissen, ist dass das Verbinden der Festplatte der auslösende Moment ist. | ||
- | //**Achtung:**Die Festplatte mit dem Server verbunden zu lassen sorgt **nicht** für kontinuierlich Datensicherungen.// | + | //**Achtung:** Die Festplatte mit dem Server verbunden zu lassen sorgt **nicht** für kontinuierlich Datensicherungen.// |
//**Achtung:** Vor dem Gesetz gilt eine Datensicherung nur dann als Datensicherung, wenn die Sicherungen **räumlich getrennt** von den originalen Daten aufbewahrt werden. Dabei meint "räumlich getrennt" mindestens einen anderen Brandabschnitt. D.h. Gesicherte Daten müssen durch mindestens eine Brandschutzwand und Brandschutztür von den Originaldaten getrennt sein. Ein Tresor mit Brandschutzfunktion erfüllt diese Forderung ebenfalls.// | //**Achtung:** Vor dem Gesetz gilt eine Datensicherung nur dann als Datensicherung, wenn die Sicherungen **räumlich getrennt** von den originalen Daten aufbewahrt werden. Dabei meint "räumlich getrennt" mindestens einen anderen Brandabschnitt. D.h. Gesicherte Daten müssen durch mindestens eine Brandschutzwand und Brandschutztür von den Originaldaten getrennt sein. Ein Tresor mit Brandschutzfunktion erfüllt diese Forderung ebenfalls.// | ||
Zeile 15: | Zeile 49: | ||
Weiterhin fordert der Gesetzgeber von Bilanz-pflichtigen Unternehmen eine tägliche Datensicherung. Dies bedeutet für die Sicherung auf externe Festplatten, dass Sie mindestens 2 Platten im Wechsel nutzen sollten, so dass eine immer an einem gesicherten Aufbewahrungsort liegt. | Weiterhin fordert der Gesetzgeber von Bilanz-pflichtigen Unternehmen eine tägliche Datensicherung. Dies bedeutet für die Sicherung auf externe Festplatten, dass Sie mindestens 2 Platten im Wechsel nutzen sollten, so dass eine immer an einem gesicherten Aufbewahrungsort liegt. | ||
- | ===== Installation und Konfiguration ===== | + | ==== Installation und Konfiguration ==== |
Die Installation ist denkbar einfach. Installieren Sie zunächst das Software-Paket "invis-rdbu", unabhängig davon, ob Sie auf externe Platten oder einen Sicherungsserver sichern wollen. | Die Installation ist denkbar einfach. Installieren Sie zunächst das Software-Paket "invis-rdbu", unabhängig davon, ob Sie auf externe Platten oder einen Sicherungsserver sichern wollen. | ||
Zeile 23: | Zeile 57: | ||
</code> | </code> | ||
- | ==== Einrichten der Datensicherung auf externe Festplatten ==== | + | === Einrichten und registrieren der Datensicherungsfestplatten === |
Legen sie auf einer externen Festplatte eine einzige Partition an und formatieren Sie diese mit einem "ext3" oder "ext4" Dateisystem. Trennen und verbinden Sie die Festplatte nach der Formatierung neu mit Ihrem Server. Warten Sie ein paar Sekunden. | Legen sie auf einer externen Festplatte eine einzige Partition an und formatieren Sie diese mit einem "ext3" oder "ext4" Dateisystem. Trennen und verbinden Sie die Festplatte nach der Formatierung neu mit Ihrem Server. Warten Sie ein paar Sekunden. | ||
- | |||
- | === Registrieren der Sicherungsfestplatte === | ||
Während der erwähnten wenigen Sekunden Wartezeit können Sie dem Server bei der Hardware-Erkennung zuschauen: | Während der erwähnten wenigen Sekunden Wartezeit können Sie dem Server bei der Hardware-Erkennung zuschauen: | ||
Zeile 268: | Zeile 300: | ||
===== Daten wiederherstellen ===== | ===== Daten wiederherstellen ===== | ||
+ | |||
+ | Die Wiederherstellung von Daten unterscheidet sich geringfügig, je nach dem, ob das Sicherungsziel externe Festplatten oder ein Sicherungsserver ist. | ||
+ | |||
+ | ==== Wechseln ins Verzeichnis der Datensicherung ==== | ||
+ | |||
+ | Im Falle externer Sicherungsplatten ist beim Verbinden der Platte mit dem Server zu verhindern, dass das Verbinden unmittelbar eine neue Sicherung auslöst. Für diesen Zweck existiert ein eigenes Script, welches vor dem Verbinden der Festplatte ohne weiteren Parameter auf der Kommandozeile des Servers aufgerufen wird: | ||
+ | |||
+ | <code> | ||
+ | invis: # udevrestore | ||
+ | </code> | ||
+ | |||
+ | Für die Wiederherstellung von Daten ist es entscheidend, wie schnell der Verlust einer Datei oder eines Verzeichnisses auffällt. Da die Basis der Sicherung das Programm //**rdiff-backup**// ist, ist jeweils der letzte Sicherungsstand direkt verfügbar, ältere Sicherungsstände liegen nur noch als sogenannte Inkremente in der Sicherung vor und müssen unter Verwendung von //**rdiff-backup**// **berechnet** werden. In jedem Fall benötigen Sie Erfahrung auf der Linux-Kommandozeile. | ||
+ | |||
+ | In der Praxis bedeutet das, dass eine Datei die nach der letzten Datensicherung auf dem Server gelöscht wurde, auf dem Sicherungsmedium vollwertig vorhanden ist und einfach zurück kopiert werden kann. Erfolgt nach dem Löschen eines Originals eine zweite Sicherung auf das gleiche Sicherungsmedium muss die Datei aus den Inkrementen wiederhergestellt werden. Letzteres ist deutlich aufwändiger. | ||
+ | |||
+ | Um Daten wiederherzustellen müssen Sie auf der Kommandozeile in das Verzeichnis der Sicherung wechseln. Je nach Sicherungsziel müssen Sie unterschiedliche Wege gehen. | ||
+ | |||
+ | **Sicherungsfestplatte** | ||
+ | |||
+ | Hier muss zunächst dafür Sorge getragen werden, dass das Anschließen der Platte von der Daten wiederhergestellt werden sollen, keine neue Datensicherung auslöst. Für diesen Zweck bringt die Sicherungssoftware des invis-Servers ein eigenes Script mit. Es ist vor dem Verbinden der Festplatte einfach ohne weiteren Parameter aufzurufen: | ||
+ | |||
+ | <code> | ||
+ | invis:~ # udbrestore | ||
+ | </code> | ||
+ | |||
+ | |||
+ | Jetzt kann die Sicherungsplatte verbunden und eingehängt werden: | ||
+ | |||
+ | <code> | ||
+ | invis:~ # mount /dev/backup /mnt/udevsync | ||
+ | </code> | ||
+ | |||
+ | Jetzt kann ins Verzeichnis der Sicherungen gewechselt werden: | ||
+ | |||
+ | <code> | ||
+ | invis:~ # cd /mnt/udevsync/rdbackups | ||
+ | </code> | ||
+ | |||
+ | Unterhalb dieses Verzeichnisses befinden sich für jede Sicherungsquelle ein Unterverzeichnis: | ||
+ | |||
+ | <code> | ||
+ | invis:~ # ls -l | ||
+ | drwxr-xr-x 19 root root 4096 4. Okt 16:06 home | ||
+ | drwxr-xr-x 20 root root 4096 1. Dez 12:30 root | ||
+ | drwxr-xr-x 12 root root 4096 1. Dez 13:38 srv | ||
+ | drwxr-xr-x 13 root root 4096 1. Dez 12:05 var | ||
+ | </code> | ||
+ | |||
+ | Die Nutzdaten Ihres Unternehmens finden Sie unter "/home" bzw. "/srv". In diesen Verzeichnissen finden Sie 1:1 die Datenstruktur vor wie auf den Quellverzeichnissen des Servers. Um Daten der letzten Sicherung wiederherzustellen müssen Sie lediglich die entsprechende Datei oder das Verzeichnis aus dem Sicherungsverzeichnis an einen Ort Ihrer Wahl kopieren. Am einfachsten können Sie dass mit Hilfe des auf jedem invis-Server installierten Dateimanagers "Midnight Commander" (//**mc**//) erledigen. | ||
+ | |||
+ | Nach dme Wiederherstellen der Daten ist die Sicherungsfestplatte wieder auszuhängen und vom Server zu trennen: | ||
+ | |||
+ | <code> | ||
+ | invis:~ # umount /mnt/udevsync | ||
+ | </code> | ||
+ | |||
+ | **Datensicherungsserver** | ||
+ | |||
+ | In diesem Fall melden Sie sich zunächst per SSH am Sicherungsserver an: | ||
+ | |||
+ | <code> | ||
+ | invis:~ # ssh root@sicherungsserver | ||
+ | sicherungsserver:~ # | ||
+ | </code> | ||
+ | |||
+ | Die Abfrage eines Passworts erfolgt nicht, da die Authentifikation via Public-Key Verfahren erfolgt. | ||
+ | |||
+ | Wechseln sie jetzt ins Sicherungsverzeichnis: | ||
+ | |||
+ | <code> | ||
+ | sicherungsserver:~ # cd /srv/backup | ||
+ | </code> | ||
+ | |||
+ | ==== Wiederherstellen von Daten mittels rdiff-backup ==== | ||
... work in progress ... | ... work in progress ... | ||
- | ===== Aufräumen ===== | + | ===== Sicherung Überwachen und ggf. Aufräumen ===== |
Wir haben festgestellt, dass gerade bei der Verwendung von externen Sicherungsfestplatten immer wieder Probleme auftreten, beispielsweise, weil Festplatten versehentlich getrennt werden noch während eine Sicherung läuft. Um derartiges zu vermeiden zeigt das invis-Portal inzwischen wesentlich deutlicher an, dass eine Sicherung aktiv ist. Dies setzt natürlich die Nutzung des invis-Portals voraus.... | Wir haben festgestellt, dass gerade bei der Verwendung von externen Sicherungsfestplatten immer wieder Probleme auftreten, beispielsweise, weil Festplatten versehentlich getrennt werden noch während eine Sicherung läuft. Um derartiges zu vermeiden zeigt das invis-Portal inzwischen wesentlich deutlicher an, dass eine Sicherung aktiv ist. Dies setzt natürlich die Nutzung des invis-Portals voraus.... | ||
Zeile 285: | Zeile 391: | ||
===== Wiederherstellung einzelner Elemente aus dem Brick-Level Backup ===== | ===== Wiederherstellung einzelner Elemente aus dem Brick-Level Backup ===== | ||
+ | Das benötigte Werkzeug ist **//kopan-backup//**, es bietet verschiedene Möglichkeiten Elemente eines geicherten Kopano-Stores wiederherzustellen. Beginnen wir damit uns den Inhalt der Sicherung anzeigen zu lassen. Wechseln Sie dazu ins Verzeichnis in dem die gesicherten Stores liegen: | ||
+ | <file>/srv/shares/archiv/sicherungen/kopanostores</file> | ||
+ | |||
+ | Der folgende Befehl gibt den gesamten Inhalt eines gesicherten Benutzer-Stores aus: | ||
+ | |||
+ | <code> | ||
+ | invis:/srv/shares/archiv/sicherungen/kopanostores # kopano-backup --index username | ||
+ | </code> | ||
+ | |||
+ | Im Beispiel steht "username" sowohl für den Namen des Sicherungverzeichnisses eines Benutzers, als auch für den aktiven Benutzer in dessen Store ein oder mehrere Elemente wiederhergestellt werden sollen. | ||
+ | |||
+ | Mit der Option **''-u username2''** können Elemente auch in einen anderen aktiven Store wiederhergestellt werden. | ||
+ | |||
+ | Um die Ausgabe einzugrenzen, ist **//grep//** ein geeignetes Werkzeug: | ||
+ | |||
+ | <code> | ||
+ | invis:/srv/shares/archiv/sicherungen/kopanostores # kopano-backup --index username | grep Posteingang | ||
+ | </code> | ||
+ | |||
+ | Die Ausgabe der Informationen erfolgt tabellarisch, Spaltentrenner ist das Komma. Nachfolgend der Aufbau der Zeilen: | ||
+ | |||
+ | <code> | ||
+ | Eindeutige ID,Ordner,Datum Uhrzeit,Betreff oder Property | ||
+ | </code> | ||
+ | |||
+ | Anhand der ID können einzelne Elemente wiederhergestellt werden. Suchen Sie zunächst wie oben gezeigt das wiederherzustellende Element, beispielsweise anhand des Betreffs oder des Datums eines Elementes. Nutzen Sie jetzt die ID des gesuchten Elements um es wiederherzustellen: | ||
+ | |||
+ | **Wiederherstellen eines einzelnen Elementes** | ||
+ | |||
+ | <code> | ||
+ | /srv/shares/archiv/sicherungen/kopanostores # kopano-backup --restore username --sourcekey DFD123BE9FD84F7AB08E00DD959F2730080100000000 | ||
+ | </code> | ||
+ | |||
+ | **Wiederherstellen aller Elemente eines Ordners** | ||
+ | |||
+ | <code> | ||
+ | /srv/shares/archiv/sicherungen/kopanostores # kopano-backup --restore username -f Posteingang | ||
+ | </code> | ||
+ | |||
+ | Dabei wird im Store des Benutzers nichts überschrieben. Bereits vorhandene Elemente werden automatisch übersprungen. | ||
+ | |||
+ | **Wiederherstellung nach Datum** | ||
+ | |||
+ | Auch eine zeitliche Eingrenzung der Wiederherstellung auf ein Datum oder einen Datumsbereich ist möglich. | ||
+ | |||
+ | <code> | ||
+ | /srv/shares/archiv/sicherungen/kopanostores # kopano-backup --restore username -b 2014-01-01 -e 2015-01-01 | ||
+ | </code> | ||
+ | |||
+ | Die Optionen **''-b''** und **''-e''** stehen wie kaum anders zu vermuten für "begin" und "end". | ||
+ | |||
+ | **Komplexeres Beispiel** | ||
+ | |||
+ | Die hier gezeigten Beispiele lassen sich selbstverständlich auch kombinieren. | ||
+ | |||
+ | Wenn Sie beispielsweise alle Mails aus dem Posteingang eines Users aus einem bestimmten Zeitraum in einen Unterordner eines anderen Users wiederherstellen wollen sähe das wie folgt aus: | ||
+ | |||
+ | <code> | ||
+ | /srv/shares/archiv/sicherungen/kopanostores # kopano-backup --restore username1 -f Posteingang -b 2014-01-01 -e 2015-01-01 -u username2 --restore-root from_username1 | ||
+ | </code> | ||
+ | |||
+ | Zu erwähnen wäre noch die Option **''- -recursive''**, sie stellt alle Elemente eines Ordners inklusive Unterordner wieder her. | ||
===== Wiederherstellung der vollständigen Datenbank ===== | ===== Wiederherstellung der vollständigen Datenbank ===== | ||
+ | |||
+ | //**Achtung**: Die Wiederherstellung der Kopano-Datenbank sollten Sie nur durchführen, wenn die vorhandene Datenbank irreparabel beschädigt ist. Die vorhandene Datenbank wird bei der Wiederherstellung vollständig überschrieben.// | ||
+ | |||
+ | Es gibt zwei mögliche Vorgehensweisen. Die Sicherung liegt gezippt vor. Sie können die Datei, wenn gewünscht zunächst entzippen und dann wiederherstellen, oder Sie führen beide Schritte in einem durch. | ||
+ | |||
+ | **2 Schritte** | ||
+ | |||
+ | <code> | ||
+ | invis:~ # gunzip gunzip /srv/shares/archiv/sicherungen/vollsicherungen/datenbanksicherungen/20171003/kopano.invis.20171003.gz | ||
+ | invis:~ # mysql -u root -p kopano < /srv/shares/archiv/sicherungen/vollsicherungen/datenbanksicherungen/20171003/kopano.invis.20171003 | ||
+ | </code> | ||
+ | |||
+ | **1 Schritt** | ||
+ | |||
+ | <code> | ||
+ | invis:~ # gunzip < /srv/shares/archiv/sicherungen/vollsicherungen/datenbanksicherungen/20171003/kopano.invis.20171003.gz | mysql -u root -p kopano | ||
+ | </code> |