# Backups

Easy Backup sichert die MySQL-Datenbank und die Uploads deines Backends nach Zeitplan oder auf Abruf und stellt einzelne Sicherungen wieder her.

> Source: https://www.application-platform.com/de/docs/backups/

Easy Backup steht für Projekte mit MySQL-Backend zur Verfügung. Du schaltest es in der Projektkonfiguration ein, an derselben Stelle wie phpMyAdmin. Danach läuft es als Sidecar neben deinem Backend: eine NestJS-API und eine Next.js-Oberfläche im selben Docker-Netz wie MySQL. Weil der Dienst die Datenbank direkt über dieses Netz erreicht, braucht er keinen Zugriff auf den Docker-Socket des Servers. Die Sicherungen entstehen mit `mysqldump` und `tar` im Container.

## Was in einer Sicherung steckt

Eine Sicherung besteht aus zwei Teilen. Die Datenbank wird als gzip-komprimiertes SQL exportiert. Die Uploads werden als `tar.gz` des Ordners `./backend-uploads` gesichert, den das Deployment im Backend-Container unter `/app/upload` einhängt; welche Konvention dafür gilt, steht unter [Backend veröffentlichen]({{< relref "publish-backend" >}}). Archive und Metadaten liegen auf dem Server unter `./backend-backups`, neben `./backend-mysql` mit den Daten der Datenbank.

## Drei Zugriffsarten

Für jedes Backend legst du genau eine Zugriffsart fest.

Im Modus **Intern** ist die Oberfläche nur über `127.0.0.1` erreichbar, also lokal auf dem Server oder über eine Port-Weiterleitung. Aus dem Internet ist nichts davon zu sehen.

Im Modus **Öffentlich** bekommt die Oberfläche eine eigene Domain oder die Adresse `backup.<projekt>.<org>.ap-clients.com` und ist mit Benutzername und Passwort geschützt.

Im Modus **Platform** bleibt die Oberfläche intern. Die Application Platform spricht ausschließlich die Schnittstelle unter `/api/platform/*` mit einem API-Key an, und du verwaltest Liste, Wiederherstellung und Zeitplan in der Web-Oberfläche der Plattform unter **Backups**.

## Zeitplan und Aufbewahrung

Ohne eigene Einstellung läuft die Sicherung täglich um 04:00 Uhr in der Zeitzone des Servers, und die letzten 14 täglichen Sicherungen bleiben erhalten. Beides änderst du in der Easy-Backup-Oberfläche, über die Plattform-API oder mit der Kommandozeile `easy-backup`, die auch Sicherungen auslöst und wiederherstellt:

```bash
easy-backup list
easy-backup create --database --uploads
easy-backup restore <id>
easy-backup schedule --cron "0 4 * * *" --retention 14
```

`restore` spielt die Sicherung mit der angegebenen ID zurück, und `create` mit beiden Schaltern sichert Datenbank und Uploads zusammen.

