66ae90611a033862034a8fc8604cef108febe0d4
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:
sudo dnf install -y rsync tar zstd gzip rclone mariadb postfix
Repo deploy:
./install.sh
Konfiguration
Konfig anpassen:
/etc/app-backup/app-backup.conf
DB-Credentials (aus Templates):
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:
sudo rclone listremotes
sudo rclone lsd onedrive:
Backup Timer
Timer aktivieren (macht install.sh bereits):
sudo systemctl enable --now app-backup.timer
sudo systemctl list-timers | grep app-backup
Manueller Testlauf:
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_DAYSTage aufbewahrt (Standard: 7 Tage) - Zusätzlich wird vor und nach dem Staging geprüft, ob mindestens
MIN_FREE_GBGiB 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=7MIN_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)
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
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)
sudo /usr/local/sbin/app-restore.sh --remote-file appbackup_YYYY-mm-dd_HH-MM-SS.tar.zst
Teil-Restore
Nur Nextcloud + DB:
sudo /usr/local/sbin/app-restore.sh --archive /path/to/archive.tar.zst --only nextcloud,nextcloud-data,db
Alles außer Mail:
sudo /usr/local/sbin/app-restore.sh --archive /path/to/archive.tar.zst --skip mail
Nach dem Restore prüfen
systemctl status httpd postfix dovecot --no-pager
tail -n 200 /var/log/app-backup/app-restore_*.log
Optional (kann dauern):
sudo -u apache php /var/www/html/nextcloud/occ maintenance:repair
Description
Backups the internal data of our nextcloud, wordpress and mariadb to a shared deive which then gets uploaded to onedrive.
Languages
Shell
100%