Redmine mit dem Bitnami Docker-Image sichern
In einem vorherigen Beitrag habe ich beschrieben, wie man Redmine auf Linux mit dem hervorragenden Bitnami Docker-Image installiert.
Dieser Beitrag zeigt dir, wie du einfach ein Online-Backup deiner Redmine-Installation erstellst. Beachte, dass die Automatisierung des Backups nicht Gegenstand dieses Beitrags ist.
Wir nehmen an, dass Redmine wie in meinem vorherigen Beitrag in /var/lib/redmine installiert ist und dass du nach my.backup.server:~/redmine-backup/ mit rsync sichern möchtest.
Redmine-Daten sichern
Das ist ziemlich einfach, da sich die Daten alle in nur einem Verzeichnis befinden. Du kannst sie synchronisieren mit
rsync --checksum -Pavz /var/lib/redmine/redmine_data my.backup.server:~/redmine-backup/Beachte, dass alte Versionen von Dateien in redmine_data überschrieben werden, jedoch werden lokal gelöschte Dateien nicht auf dem Backup-Server gelöscht. Für mich scheint dies ein guter Kompromiss zwischen der Möglichkeit, gelöschte Dateien wiederherzustellen, und dem genutzten Speicherplatz zu sein.
Redmine-Datenbank sichern
Dieser Teil ist etwas komplizierter, da wir auf den MariaDB-Server zugreifen müssen, der in einem anderen Container läuft. Wichtiger Hinweis: Die Container-ID kann sich ändern, daher reicht es nicht aus, die Container-ID einmal zu finden und dann zu verwenden. Du musst die entsprechende ID jedes Mal ermitteln, wenn du ein Backup durchführst. Siehe unten für Anweisungen, wie das geht.
Vollständiger Befehl:
docker exec -it $(docker container ls | grep redmine_mariadb_1 | cut -d' ' -f1) mysqldump -uroot bitnami_redmine | xz -e9 -zc - > redmine-database-dump-$(date -I).sql.xzLass es uns aufschlüsseln:
docker exec -it (Container-ID) (Befehl): Führt einen Befehl in einem laufenden Docker-Container aus.docker container ls | grep redmine_mariadb_1 | cut -d' ' -f1: Ermittelt die ID (erstes Feld der Ausgabecut -d' ' -f1) des laufenden Docker-Containers namensredmine_mariadb_1mysqldump -uroot bitnami_redmine: Dies wird im Docker-Container ausgeführt und gibt die Redmine-Datenbank als SQL auf stdout aus. Es ist kein Passwort erforderlich, da das Bitnami MariaDB-Image den Zugriff ohne Passwort erlaubt.xz -e9 -zc -: Nimmt die Daten von mysqldump von stdin (-), komprimiert sie mit maximalen Kompressionseinstellungen (-e9 -z) und schreibt die komprimierten Daten auf stdout.> redmine-database-dump-$(date -I).sql.xz: Schreibt die komprimierten Daten von xz in eine Datei namensredmine-database-dump-(aktuelles Datum).sql.xzim aktuellen Verzeichnis.
Die resultierende Datei heißt z.B. redmine-database-dump-2019-02-01.sql.xz und wird im aktuellen Verzeichnis abgelegt. Stelle sicher, dass du den Befehl in einem geeigneten Verzeichnis ausführst. Führe ihn in /tmp aus, wenn du nicht weißt, welches Verzeichnis geeignet sein könnte.
Nun können wir sie mit rsync auf den Server übertragen:
rsync --checksum -Pavz redmine-backup-*.sql.xz my.backup.server:~/redmine-backup/Da der Dateiname das aktuelle Datum enthält, überschreibt dieser Ansatz keine alten täglichen Datenbank-Backups, sodass du deine Datenbank sehr flexibel wiederherstellen kannst.