Modular Backup Tool
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
comrad ec15f1796d TheLounge nach HolarseChat umbenannt 4 months ago
etc/systemd/system Holarse-Chat ergänzt 4 months ago
modules TheLounge nach HolarseChat umbenannt 4 months ago
.gitignore Verschlüsselung hinzugefügt und README vervollständigt 2 years ago
README.md Verschlüsselung hinzugefügt und README vervollständigt 2 years ago
backup.env Datenbanken-Backup mit unterschiedlichen Dateien je Datenbank, 8 months ago
backup.sh Verschlüsselung von sensiblen Benutzerdaten, Korrektur eines Fehlers und Reaktivierung 4 months ago

README.md

HOLARSE BACKUP

Script mit wiederverwendbaren Funktionen wie SQL-Dump oder Verzeichnis-Tar. Unterstützt Komprimierung mit xz.

Unterstütze Funktionen

zsqldump

$(zsqldump project username password database)

Erzeugt einen SQL-Dump einer MySQL-Datenbank und komprimiert diesen mit xz. Und muss als Substituion aufgerufen werden, damit der erstellte SQL-Dump als Dateipfad zurückgegebn werden kann.

zarchive

$(zarchive project beliebig viele verzeichnisse)

Die Variable “project” beschreibt das gemeinsame Verzeichnis, in das die verschiedenen Funktionen das Backup-Ergebnis schreiben. Muss ebenfalls als Substituion aufgerufen werden, damit das erzeugte Archiv als Dateipfad zurückgegebn werden kann.

tailclear_backup

Ältere Backups können mit diesem Kommand aufgeräumt werden. Der dritte Parameter gibt an, wieviele Restdateien noch übrig bleiben müssen. Das ist sinnvoll, wenn das Backup nicht läuft. In dem Fall sollen die Aufräumscripte nicht die älteren und nicht mehr erneuerten Backups löschen.

   tailclear_backup project tage anzahl_restdateien

encrypt

Verschlüsselt das übergebene Archiv symmetrisch. Dazu wird eine Datei mit der Endung “.pass” verwendet, die mit dem Modulnamen übereinstimmen muss.

      $(encrypt project file)

Die verschlüsselte Datei wird dann per Substitution zurückgegeben.

save_offsite

Speichert die übergebene Datei auf dem Host per scp. Auf dem Host wird das entsprechende Projekt-Verzeichnis automatisch angelegt. Der Host sollte per ssh-Config-Eintrag ohne weitere Parameter aufrufbar sein.

  save_offsite project host file

trigger_downtime

Veranlasst für den in “project” übergebenen Service eine flexible Downtime von einer Stunde.

   trigger_downtime project comment

Installation eines neuen Moduls

Modul schreiben, das das Backup durchführt, unter Verwendung (nicht zwingend) der Hilfsmethoden. Speicherort ist im hbackup-Verzeichnis unter modules. Der Name des Moduls wird dem Script als Aufrufparameter mitgegeben.

Beispielsweise liegt das Modul unter hbackup/modules/voxelands. Aufruf des Backups wäre dann mit

/root/hbackup/backup.sh voxelands

Die Modul-Datei muss unbedingt ausführbar sein.

Dazu gehört eine Environment-Datei, die am selben Ort liegen muss mit dem selben Namen, jedoch mit der Endung “.env”, in diesem Fall muss also die Datei hbackup/modules/voxelands.env existieren.

Systemd-Units werden über den Timer anlegt. Beispielsweise muss die Datei /etc/systemd/system/backup@voxelands.timer angelegt werden, damit das Backup durchgeführt werden kann. Dieses ruft dann automatisch den Service backup@voxelands.service auf, der wiederrum das Backup-Script wie oben genannt aufruft und dabei die Environment-Datei hbackup/modules/voxelands.env zuweist.

Das Backup kann dann mit

systemctl enable backup@voxelands.timer
systemctl start backup@voxelands.timer

gestartet werden.

TODO

  • Service-Abhängigkeiten definieren, z.B. Server-Shutdown
  • Monitoring-Möglichkeit, hat ein Modul die Dateien erzeugt, die es erwartet hat? Rückgabe natürlich in NAGIOS-Format.
  • Komprimierung in eigene Substitutions-Funktion auslagern. Damit kann der Komprimierungsalgorithmus selbst ausgewählt werden.