# app-backup (Rocky Linux / Apache / Postfix) Resiliente tägliche Backups für **WordPress**, **Nextcloud** und **Mail** (Postfix/Dovecot optional). Erzeugt **timestamped Archive**, lädt nach **OneDrive** via **rclone** und verschickt einen **Mail-Report** an den lokalen User **johannes**. Enthält zusätzlich ein Restore-Script mit **Dry-Run**, **Service-Stop/Start** und **Nextcloud Maintenance Mode**. ## Installation Pakete: ```bash sudo dnf install -y rsync tar zstd gzip rclone mariadb postfix ``` Repo deploy: ```bash ./install.sh ``` ## Konfiguration Konfig anpassen: - `/etc/app-backup/app-backup.conf` DB-Credentials (aus Templates): ```bash sudo cp /etc/app-backup/db-wordpress.cnf.example /etc/app-backup/db-wordpress.cnf sudo cp /etc/app-backup/db-nextcloud.cnf.example /etc/app-backup/db-nextcloud.cnf sudo chmod 600 /etc/app-backup/db-*.cnf sudo chown root:root /etc/app-backup/db-*.cnf ``` rclone für root testen: ```bash sudo rclone listremotes sudo rclone lsd onedrive: ``` ## Backup Timer Timer aktivieren (macht install.sh bereits): ```bash sudo systemctl enable --now app-backup.timer sudo systemctl list-timers | grep app-backup ``` Manueller Testlauf: ```bash sudo systemctl start app-backup.service journalctl -u app-backup.service -n 200 --no-pager ls -la /var/log/app-backup/ ls -la /var/backups/app-backup/archives/ ``` ## Disk-Schutz / Retention (wichtig) Um ein volllaufendes Dateisystem zu vermeiden, gilt: - **Lokale Archive werden maximal `LOCAL_RETENTION_DAYS` Tage aufbewahrt** (Standard: **7 Tage**) - Zusätzlich wird vor und nach dem Staging geprüft, ob mindestens **`MIN_FREE_GB` GiB** frei sind (Standard: **10 GiB**). - Gelöschte Backups werden im **Mail-Report** aufgeführt (Anzahl + grob freigegebener Speicher). Einstellungen in `/etc/app-backup/app-backup.conf`: - `LOCAL_RETENTION_DAYS=7` - `MIN_FREE_GB=10` ## Mail-Report Versand per Postfix `/usr/sbin/sendmail` an `MAIL_TO` (Default: `johannes`). Der Report enthält u.a.: - Status (SUCCESS/FAIL), Laufzeit - Was gesichert wurde + Größen - Upload-Status (rclone) - **Wie viele alte lokale Backups gelöscht wurden (Retention)** ## Restore (Wiederherstellung) ### Dry-Run (empfohlen) ```bash sudo /usr/local/sbin/app-restore.sh --archive /var/backups/app-backup/archives/appbackup_YYYY-mm-dd_HH-MM-SS.tar.zst --dry-run ``` ### Restore aus lokalem Archiv ```bash sudo /usr/local/sbin/app-restore.sh --archive /var/backups/app-backup/archives/appbackup_YYYY-mm-dd_HH-MM-SS.tar.zst ``` ### Restore direkt aus OneDrive (Download + Restore) ```bash sudo /usr/local/sbin/app-restore.sh --remote-file appbackup_YYYY-mm-dd_HH-MM-SS.tar.zst ``` ### Teil-Restore Nur Nextcloud + DB: ```bash sudo /usr/local/sbin/app-restore.sh --archive /path/to/archive.tar.zst --only nextcloud,nextcloud-data,db ``` Alles außer Mail: ```bash sudo /usr/local/sbin/app-restore.sh --archive /path/to/archive.tar.zst --skip mail ``` ### Nach dem Restore prüfen ```bash systemctl status httpd postfix dovecot --no-pager tail -n 200 /var/log/app-backup/app-restore_*.log ``` Optional (kann dauern): ```bash sudo -u apache php /var/www/html/nextcloud/occ maintenance:repair ```