pdir / contao-db-restore-bundle
Datenbank-Backups im Contao-Backend hochladen und einspielen – ohne SSH und ohne phpMyAdmin.
Package info
github.com/pdir/contao-db-restore-bundle
Type:contao-bundle
pkg:composer/pdir/contao-db-restore-bundle
Requires
- php: ^8.2
- contao/core-bundle: ^5.3 || ^6.0
- symfony/config: ^6.4 || ^7.0 || ^8.0
- symfony/dependency-injection: ^6.4 || ^7.0 || ^8.0
- symfony/http-foundation: ^6.4 || ^7.0 || ^8.0
- symfony/http-kernel: ^6.4 || ^7.0 || ^8.0
- symfony/routing: ^6.4 || ^7.0 || ^8.0
- symfony/security-bundle: ^6.4 || ^7.0 || ^8.0
Requires (Dev)
- contao/manager-plugin: ^2.0
Suggests
None
Provides
None
Conflicts
- contao/manager-plugin: <2.0 || >=3.0
- doctrine/dbal: 4.5.0
Replaces
None
This package is auto-updated.
Last update: 2026-11-03 17:05:24 UTC
README
Datenbank-Backups direkt im Contao-Backend hochladen und einspielen – für Hoster ohne SSH und ohne phpMyAdmin.
Der Restore nutzt Contaos eigenen BackupManager, also dieselbe Logik wie
php vendor/bin/contao-console contao:backup:restore, aber ohne exec(), proc_open() oder PHP-CLI-Binary.
Funktionen
- Backend-Menü System → DB-Backup einspielen (nur Administratoren)
- Upload von
.sql/.sql.gz– wird automatisch unter einem gültigen Contao-Backup-Namen invar/backups/gespeichert - Per FTP nach
var/backups/gelegte Dateien mit beliebigem Namen (z. B.export.sql) per Klick „übernehmen“ - Sicherheits-Backup der aktuellen Datenbank vor jedem Restore (
vor-restore__….sql.gz) - Optional Fremd-Dumps aus phpMyAdmin/mysqldump (überspringt Contaos Herkunftsprüfung)
- Bestätigung durch Eintippen von
EINSPIELEN, Logeintrag im Systemlog
Voraussetzungen
Contao 5.3 bis 5.7 sowie Contao 6.x
- Contao 5.3–5.7: PHP 8.2+, Symfony 6.4 oder 7.x
- Contao 6.x: PHP 8.4+, Symfony 7.4 oder 8.x
Installation
Contao Manager
Im Contao Manager unter Pakete nach pdir/contao-db-restore-bundle (oder „DB Restore“) suchen, das Paket hinzufügen und die Änderungen anwenden.
Composer
composer require pdir/contao-db-restore-bundle
Direkt aus dem Git-Repository
Für eine unveröffentlichte Version das Repository in der composer.json des Projekts eintragen:
"repositories": [ { "type": "vcs", "url": "https://github.com/pdir/contao-db-restore-bundle" } ], "require": { "pdir/contao-db-restore-bundle": "dev-main" }
Alternativ lokal über ein path-Repository.
Ein „Datenbank aktualisieren“ ist nach der Installation nicht nötig – das Bundle legt keine Tabellen an.
Ablauf
- Dump hochladen (oder per FTP nach
var/backups/legen und „Übernehmen“ klicken) - Backup auswählen,
EINSPIELENeintippen, einspielen - Danach im Contao Manager Datenbank aktualisieren ausführen, falls der Dump aus einer älteren Contao-Version stammt, und unter System → Systemwartung den Cache leeren
Wichtige Hinweise
- Aufbewahrungsrichtlinie: Contao löscht beim Erstellen eines Backups alte Backups gemäß
contao.backup.keep_max(Standard 5) undkeep_intervals. Das Sicherheits-Backup vor einem Restore löst diese Aufräumregel nicht aus: Die vorhandenen Backups liegen währenddessen kurz invar/backups/.db-restore-hold/und werden danach zurückverschoben – auch nach einem abgebrochenen Request beim nächsten Aufruf der Seite. Sicherheits-Backups sammeln sich deshalb an und sollten gelegentlich gelöscht werden. Backups übercontao:backup:createoder den Contao Manager räumen weiterhin wie gewohnt auf. - Timeouts: Der Import läuft in einem einzigen Web-Request (
set_time_limit(0)+ignore_user_abort). Manche Hoster begrenzen die Laufzeit zusätzlich auf FastCGI-/Proxy-Ebene. Für Dumps im GB-Bereich ggf. BigDump oder den Contao Manager nutzen. - Fremd-Dumps: Contaos Importer arbeitet zeilenweise und führt eine Anweisung aus, sobald eine Zeile mit
;endet. Normale Exporte (Tabellen + Daten) funktionieren. Dumps mitDELIMITER(Trigger, Stored Procedures) werden nicht unterstützt. - Login: Der Dump überschreibt auch
tl_user. Weicht der Benutzerstand ab, ist danach ein neuer Login nötig. - Doctrine DBAL 4.5.0: Backups aus dieser Version enthalten jeden Unique-Key doppelt und lassen sich nicht einspielen (
1061 Duplicate key name, siehe contao/contao#10450). Das Bundle lässt sich deshalb nicht zusammen mitdoctrine/dbal4.5.0 installieren. Bereits damit erstellte Backups bleiben unbrauchbar; als Workaround die TeileCONSTRAINT `…` UNIQUE (…),aus einer Kopie des Dumps entfernen. - Tabellen ignorieren: Es gelten Contaos Einstellungen unter
contao.backup.ignore_tables. - Seit Contao 5.7 liegt
AbstractBackendControllerunterContao\CoreBundle\Controller\Backend\, der alte Namespace fällt in Contao 7 weg.BackendControllerBasewählt automatisch die passende Klasse, unter 5.7 und 6.x gibt es deshalb keine Deprecation-Meldung.
Anzeige in der Erweiterungsliste
Die Datei .promo.json gehört nicht zum Bundle selbst, sondern steuert die Anzeige auf extensions.contao.org, die das interne Werkzeug contao-promo bei jedem Feature-Release (x.y.0 mit [Added]-Einträgen in der CHANGELOG.md) erzeugt. Sie enthält:
name: Produktname auf dem Bannerscreenshot: Bild rechts im Banner, hierdocs/db-restore-promo.png(Format 5:4, wird links oben beschnitten)template: Banner-Vorlage (pdir)de/en: Überschrift und drei kurze Features je Sprache – lange Features werden auf dem Banner abgeschnitten
Vor einem Release lässt sich das Banner lokal prüfen:
cd ../contao-promo
node bin/scan.mjs --local ../contao-db-restore-bundle --version 1.0.0
Die Screenshots in docs/ stammen aus einer Contao-6-Testinstallation (db-restore-backend.png, db-restore-backend-dark.png für Dokumentation, db-restore-promo.png für das Banner).
Lizenz
MIT