Zum Hauptinhalt springen

Backup und Wiederherstellung

Eine 3-2-1 Backup-Strategie wird empfohlen, um Ihre Daten zu schützen. Sie sollten Kopien Ihrer hochgeladenen Fotos/Videos sowie der Immich-Datenbank aufbewahren, um eine umfassende Backup-Lösung zu gewährleisten. Diese Seite bietet einen Überblick darüber, wie Sie die Datenbank sichern und wo sich die von Benutzern hochgeladenen Bilder und Videos befinden. Ein Beispiel-Bash-Skript, das als Cron-Job ausgeführt werden kann, finden Sie hier.

Die Anweisungen auf dieser Seite zeigen Ihnen, wie Sie Ihre Immich-Instanz für ein Backup vorbereiten und welche Dateien gesichert werden sollten. Sie müssen jedoch selbst ein Backup-Tool verwenden, um tatsächlich ein Backup zu erstellen.

Datenbank

Immich speichert Dateipfade in der Datenbank. Es scannt den Bibliotheksordner nicht, um die Datenbank zu aktualisieren, daher sind Backups entscheidend.

Info

Siehe die offizielle Postgres-Dokumentation für Details zum Sichern und Wiederherstellen einer Postgres-Datenbank.

Es ist nicht empfehlenswert, direkt den Ordner DB_DATA_LOCATION zu sichern. Das Ausführen einer Sicherung, während die Datenbank läuft, kann zu einem beschädigten Backup führen, das nicht wiederhergestellt werden kann.

Automatische Datenbank-Dumps

Die automatischen Datenbank-Dumps können verwendet werden, um die Datenbank im Falle von Beschädigungen der Postgres-Datenbankdateien wiederherzustellen. Es gibt keine Überwachung dieser Dumps, und Sie werden nicht benachrichtigt, falls sie fehlschlagen.

Die Datenbank-Dumps enthalten KEINE Bilder oder Videos, sondern nur Metadaten. Sie sind nur mit einer Kopie der anderen Dateien im UPLOAD_LOCATION verwendbar, wie unten beschrieben.

Für Disaster-Recovery-Zwecke erstellt Immich automatisch Datenbank-Dumps. Die Dumps werden in UPLOAD_LOCATION/backups gespeichert. Stellen Sie sicher, dass Sie Ihre eigene, unabhängige Sicherung der Datenbank zusammen mit den Asset-Ordnern wie unten angegeben durchführen. Sie können den Zeitplan und die Anzahl der aufgehobenen Datenbank-Dumps in den Admin-Einstellungen anpassen. Standardmäßig behält Immich die letzten 14 Datenbank-Dumps und erstellt jeden Tag um 2:00 Uhr morgens einen neuen Dump.

Dump auslösen

Sie können einen Datenbank-Dump auf der Admin-Jobstatus-Seite auslösen. Besuchen Sie die Seite, öffnen Sie das "Job erstellen"-Modal oben rechts, wählen Sie "Datenbank-Dump erstellen" aus und klicken Sie auf "Bestätigen". Ein Job wird ausgeführt und einen Dump auslösen. Sie können überprüfen, ob dies korrekt funktioniert hat, indem Sie die Logs oder den Ordner backups/ überprüfen. Diese Dumps werden zu den letzten X Dumps gezählt, die basierend auf Ihren Einstellungen aufbewahrt werden.

Wiederherstellung

Wir hoffen, die Wiederherstellung in zukünftigen Versionen einfacher zu gestalten. Derzeit finden Sie die Datenbank-Dumps im Ordner UPLOAD_LOCATION/backups auf Ihrem Host. Bitte folgen Sie dann den Schritten im folgenden Abschnitt, um die Datenbank wiederherzustellen.

Manuelles Backup und Wiederherstellen

Backup
docker exec -t immich_postgres pg_dumpall --clean --if-exists --username=<DB_USERNAME> | gzip > "/path/to/backup/dump.sql.gz"
Wiederherstellung
docker compose down -v  # VORSICHT! Löscht alle Immich-Daten, um von Grund auf neu zu starten
## Kommentieren Sie die nächste Zeile aus und ersetzen Sie DB_DATA_LOCATION durch Ihren Postgres-Pfad, um die Datenbank dauerhaft zurückzusetzen
# rm -rf DB_DATA_LOCATION # VORSICHT! Löscht alle Immich-Daten, um von Grund auf neu zu starten
docker compose pull # Aktualisieren Sie auf die neueste Version von Immich (falls gewünscht)
docker compose create # Erstellen Sie Docker-Container für Immich-Apps ohne diese auszuführen
docker start immich_postgres # Starten Sie den Postgres-Server
sleep 10 # Warten Sie, bis der Postgres-Server gestartet ist
# Überprüfen Sie den Datenbankbenutzer, falls Sie von der Standardeinstellung abgewichen sind
gunzip --stdout "/path/to/backup/dump.sql.gz" \
| sed "s/SELECT pg_catalog.set_config('search_path', '', false);/SELECT pg_catalog.set_config('search_path', 'public, pg_catalog', true);/g" \
| docker exec -i immich_postgres psql --dbname=postgres --username=<DB_USERNAME> # Backup wiederherstellen
docker compose up -d # Starten Sie den Rest der Immich-Apps

Bitte beachten Sie, dass für die Datenbankwiederherstellung eine vollständig neue Installation erforderlich ist (d.h. der Immich-Server muss noch nie seit der Erstellung der Docker-Container ausgeführt worden sein). Wenn die Immich-App ausgeführt wurde, können Konflikte in Postgres bei der Datenbankwiederherstellung auftreten (Relation existiert bereits, verletzte Fremdschlüsselbeschränkungen, mehrere Primärschlüssel usw.), wobei Sie den Ordner DB_DATA_LOCATION löschen müssen, um die Datenbank zurückzusetzen.

Tipp

Einige Bereitstellungsmethoden machen es schwierig, die Datenbank zu starten, ohne auch den Server zu starten. In solchen Fällen können Sie die Umgebungsvariable DB_SKIP_MIGRATIONS=true setzen, bevor Sie die Dienste starten. Dadurch wird verhindert, dass der Server Migrationen ausführt, die den Wiederherstellungsprozess stören. Stellen Sie sicher, dass Sie diese Variable entfernen und die Dienste nach der Wiederherstellung der Datenbank neu starten.

Dateisystem

Immich speichert zwei Arten von Inhalten im Dateisystem: (a) Original, unveränderte Assets (Fotos und Videos) und (b) generierte Inhalte. Wir empfehlen, den gesamten Inhalt von UPLOAD_LOCATION zu sichern, aber nur die Originalinhalte sind entscheidend, die in den folgenden Ordnern gespeichert sind:

  1. UPLOAD_LOCATION/library
  2. UPLOAD_LOCATION/upload
  3. UPLOAD_LOCATION/profile

Wenn Sie sich entscheiden, nur diese Ordner zu sichern, müssen Sie die Transcodierungs- und Thumbnail-Generierungsjobs für alle Assets neu ausführen, nachdem Sie von einem Backup wiederhergestellt haben.

Wenn Sie einige dieser Ordner auf ein anderes Speichermedium verschoben haben, wie z.B. profile/, stellen Sie sicher, dass der Sicherungspfad an Ihre Konfiguration angepasst wird.

Asset-Typen und Speicherorte

Einige Speicherorte werden durch die Speicherungsvorlage beeinflusst. Siehe unten für weitere Details.

Der Ordner UPLOAD_LOCATION/library wird standardmäßig nicht auf neuen Maschinen mit Version 1.92.0 verwendet. Er wird nur verwendet, wenn der Systemadministrator die Speicherverwaltungsvorlage aktiviert hat. Weitere Informationen finden Sie in den Release Notes.

1. Benutzerdefinierte Ordner:

  • Jeder Benutzer hat eine eindeutige Zeichenfolge, die ihn darstellt.
  • Sie können Ihre Benutzer-ID über Konto-Einstellungen -> Konto -> Benutzer-ID finden.

2. Asset-Typen und Speicherorte:

  • Quell-Assets:

    • Original-Assets, die über die Browser-Oberfläche, mobil & CLI hochgeladen wurden.
    • Gespeichert in UPLOAD_LOCATION/upload/<userID>.
  • Avatar-Bilder:

    • Benutzerprofilbilder.
    • Gespeichert in UPLOAD_LOCATION/profile/<userID>.
  • Thumbs-Bilder:

    • Vorschau-Bilder (kleine Thumbnails und große Previews) für jedes Asset und Thumbnails für erkannte Gesichter.
    • Gespeichert in UPLOAD_LOCATION/thumbs/<userID>.
  • Kodierte Assets:

    • Videos, die aus dem Original für eine breitere Kompatibilität neu kodiert wurden. Das Original wird nicht entfernt.
    • Gespeichert in UPLOAD_LOCATION/encoded-video/<userID>.
  • Postgres

    • Die Immich-Datenbank enthält alle Informationen, damit das System ordnungsgemäß funktioniert. Hinweis: Dieser Ordner wird nur Benutzern angezeigt, die die in v1.102.0 erwähnten Änderungen vorgenommen haben (eine optionale, nicht obligatorische Änderung) oder diese Version gestartet haben.
    • Gespeichert in DB_DATA_LOCATION.

    Eine Sicherung dieses Ordners stellt kein vollständiges Backup Ihrer Datenbank dar! Folgen Sie den hier aufgeführten Anweisungen, um ein ordnungsgemäßes Backup durchzuführen.

Berühren Sie die Dateien in diesen Ordnern unter keinen Umständen, außer wenn Sie eine Sicherung durchführen. Das Ändern oder Entfernen eines Assets kann zu nicht nachverfolgten und fehlenden Dateien führen. Sie können es sich wie eine App vorstellen, die nicht genannt werden soll; der einzige Zugriff auf Ansicht, Änderung und Löschung von Assets erfolgt ausschließlich über die Mobile- oder Browser-Oberfläche.

Sicherungsreihenfolge

Eine Sicherung von Immich sollte sowohl die Datenbank als auch die Asset-Dateien enthalten. Wenn diese gesichert werden, können sie möglicherweise nicht mehr synchron sein, was dazu führen kann, dass Assets nach der Wiederherstellung beschädigt sind. Der beste Weg, damit umzugehen, ist das Anhalten des immich-server Containers, während Sie eine Sicherung durchführen. Wenn sich nichts ändert, wird die Sicherung immer synchron sein.

Wenn das Anhalten des Containers keine Option ist, wird empfohlen, zuerst die Datenbank zu sichern und danach das Dateisystem. Auf diese Weise besteht das schlimmste Szenario darin, dass es Dateien im Dateisystem gibt, die der Datenbank nicht bekannt sind. Falls erforderlich, können diese nach einer Wiederherstellung manuell (erneut) hochgeladen werden. Wenn die Sicherung in umgekehrter Reihenfolge durchgeführt wird, also zuerst das Dateisystem und dann die Datenbank, könnte die wiederhergestellte Datenbank auf Dateien verweisen, die nicht in der Dateisystem-Sicherung enthalten sind, was zu beschädigten Assets führt.