DfBackup SW: complete gids
DfBackup SW installeren, configureren en gebruiken: back-up van database en bestanden, AES-256-versleuteling, opslag op S3/FTP/Dropbox, replicatie naar staging en herstel met één klik voor Shopware 6.5, 6.6 en 6.7.
DfBackup SW is een back-upsysteem van productiekwaliteit voor Shopware 6.5, 6.6 en 6.7, zonder enige externe afhankelijkheid: geen mysqldump, geen shell_exec, geen Amazon SDK. Het maakt een back-up van de database en de bestanden in pure PHP, versleutelt de archieven met geauthenticeerde AES-256, stuurt ze naar Local, S3, FTP of Dropbox, en kan elke back-up zelfs repliceren naar een tweede Shopware-staginginstallatie. Herstellen gebeurt met één klik, met een automatische veiligheidssnapshot. Deze gids behandelt de installatie, de uitvoering op de achtergrond, de versleuteling, de opslagbackends, de replicatie, het herstel, de planning en de probleemoplossing.
Installatie
- Download het archief
DfBackup-SW-1.0.0.zipvanuit uw DataFirefly-account. - Kopieer de uitgepakte map
DfBackupnaarcustom/plugins/van uw Shopware, of installeer de ZIP via Administration → Extensies → Mijn extensies → Extensie uploaden. - Start de installatie en de activering:
bin/console plugin:refresh bin/console plugin:install --activate DfBackup bin/console cache:clear - Bij de installatie maakt de plugin zijn vier tabellen aan (
df_backup,df_backup_log,df_backup_filemap,df_backup_audit) en registreert hij zijn ScheduledTask.
Compatibel met Shopware 6.5.x, 6.6.x en 6.7.x op één codebase, PHP 8.1 tot 8.3. Vereiste PHP-extensies: zip en openssl (altijd), curl (S3, Dropbox, replicatie) en ftp (backend FTP/FTPS). Geen extra Composer-afhankelijkheden.
Waar u de plugin vindt in de administration
Na de activering verschijnt er een eigen administratiemodule DfBackup in het menu. Die bundelt de lijst met back-ups, de knop Nu back-uppen, de voortgang in realtime en de toegang tot de acties per back-up (verifiëren, downloaden, beschermen, herstellen, verwijderen). De configuratie (planning, versleuteling, backends, replicatie, meldingen) gebeurt in de configuratie van de plugin via Extensies → Mijn extensies → DfBackup → ⋯ → Configureren.
Uitvoering op de achtergrond: Messenger, ScheduledTask en web-cron
Een back-up blokkeert de interface nooit. Een klik op Nu back-uppen reserveert vooraf een regel, verstuurt een asynchroon Symfony Messenger-bericht en geeft direct de identificatie terug. Het echte werk gebeurt in de worker, en de administration toont de voortgang live via 15 mijlpalen (start, databasedump, archivering, versleuteling, checksum, upload per backend, rotatie).
Aanbevolen worker in productie
Laat voor productieshops een permanent bewaakte Messenger-consumer draaien:
bin/console messenger:consume async --time-limit=300 --memory-limit=512M
Zet hem onder systemd of supervisor zodat hij automatisch herstart. Dit is de opstelling waarmee back-ups zonder enige weblimiet in tijd kunnen draaien.
ScheduledTask
Een native ScheduledTask draait elke 10 minuten en fungeert als toegangspoort tot de planning: hij controleert of er een geplande back-up moet vertrekken en verstuurt in dat geval het bericht. Hij is afhankelijk van de Shopware-scheduler, die zelf door de worker of door de Shopware-cron wordt aangedreven.
Web-cron als terugvaloptie
Activeer op hostings zonder CLI-toegang of permanente worker de web-cron: een met een token ondertekende URL (opnieuw te genereren vanuit de configuratie) die een externe dienst zoals cron-job.org elke 10 tot 15 minuten aanroept. De interne planningspoort (venster van 30 minuten, deduplicatie van 60 minuten) voorkomt dubbele triggers.
Als de administratiepagina tijdens een back-up wordt gesloten, gaat het proces in de worker door. Open de module DfBackup opnieuw om de voortgang en het resultaat terug te vinden.
De databasedump, ontworpen voor Shopware
Een naïeve SQL-dump loopt vast op Shopware. DfBackup SW verwerkt de bijzonderheden van het schema van nature:
- Gegenereerde kolommen (STORED of VIRTUAL) worden uit de INSERT-instructies weggelaten, omdat MySQL weigert dat erin wordt geschreven.
- Binaire kolommen, waaronder de UUID-primaire sleutels in BINARY 16 die overal in Shopware voorkomen, worden als hexadecimale literalen
0x…weggeschreven voor een perfect getrouwe herimport. - De keyset-paginering op een gehele primaire sleutel maakt het mogelijk zeer grote tabellen (order, log_entry) te dumpen zonder het geheugen te verzadigen.
- Views worden als laatste opnieuw aangemaakt, na alle tabellen.
De dump wordt in blokken verwerkt (500 regels per batch) en het geproduceerde bestand importeert netjes terug, instructie voor instructie, met FOREIGN_KEY_CHECKS uitgeschakeld tijdens de import.
De back-up van de bestanden
De bestanden worden gearchiveerd via ZipArchive met configureerbare glob-uitsluitingen (standaard var/cache, var/log, node_modules, miniaturen en meer). De optionele incrementele modus steunt op een sha1 van pad, grootte en mtime die in de database wordt bijgehouden: alleen de bestanden die sinds de laatste volledige back-up zijn gewijzigd, worden opnieuw gearchiveerd.
AES-256-versleuteling
De versleuteling is optioneel maar sterk aanbevolen voor archieven die extern worden bewaard. DfBackup SW past een schema AES-256-CBC plus HMAC-SHA-256 toe volgens het patroon encrypt-then-MAC:
- De wachtwoordzin gaat door PBKDF2-SHA256 met 120.000 iteraties om afzonderlijke sleutels voor versleuteling en HMAC af te leiden.
- De versleuteling gebeurt streaming in blokken van 1 MiB: een archief van meerdere GB wordt met een constant geheugengebruik versleuteld.
- Bij het lezen wordt de HMAC vóór elke ontsleuteling gecontroleerd (bescherming tegen padding oracle- en bit-flip-aanvallen).
- Een onafhankelijke SHA-256 waarborgt de integriteit van het ruwe bestand (status
verifiedofcorruptedin de database).
Als de wachtwoordzin verloren gaat, zijn de versleutelde archieven definitief onherstelbaar; dat is precies de garantie van geauthenticeerde versleuteling. Bewaar de wachtwoordzin in een externe wachtwoordmanager (Bitwarden, 1Password) voordat u de versleuteling activeert.
Opslagbackends
Elke back-up kan tegelijk naar een of meer backends worden verstuurd, om de 3-2-1-regel toe te passen:
- Local: onder
var/df-backup, met bescherming tegen listing. - Amazon S3 en compatibele diensten: native AWS V4-handtekening (zonder SDK), automatische multipart upload boven 100 MB (delen van 10 MB). Compatibel met MinIO, Wasabi, Cloudflare R2, OVH, Scaleway en Backblaze B2 door endpoint en regio te overschrijven.
- FTP en FTPS: passieve modus, automatische aanmaak van de externe map.
- Dropbox v2: REST met
upload_sessionin blokken voor archieven boven 150 MB.
Cloudflare R2 biedt 10 GB gratis met nul uitgaande kosten: een uitstekend extern backend voor versleutelde back-ups. Vul het R2-endpoint en de regio auto in bij de S3-configuratie.
Replicatie naar een Shopware-staging
Dit is de functie die DfBackup SW onderscheidt: elke back-up doorsturen naar een tweede Shopware-installatie met dezelfde plugin.
- Installeer DfBackup SW op de productie en op de staging.
- Genereer een gedeeld geheim (een lange willekeurige tekenreeks) en vul het aan beide kanten in.
- Activeer aan de productiekant Replicatie als bestemming en geef de URL van de staging op.
Bij elke back-up wordt het archief in blokken van 8 MB, ondertekend met HMAC-SHA-256, geüpload naar speciale endpoints op het doel (chunk, commit, delete, ping), met antireplay via een tijdstempel met een tolerantie van 5 minuten. Als de optie voor automatisch herstel aan de stagingkant actief is, wordt het archief automatisch toegepast: uw staging weerspiegelt de productie van gisteren zodra de volgende ochtend aanbreekt.
Gecombineerd met de domeinmigratie (zie hieronder) levert de replicatie een kloon op die meteen op zijn eigen domein te bezoeken is, zonder rsync of cronscripts voor sysadmins.
Herstel met één klik
Vanuit de lijst met back-ups opent de knop Herstellen een venster:
- Kies het bereik: alles, alleen de database of alleen de bestanden.
- Typ ter bevestiging het woord
RESTORE, een beveiliging tegen verkeerde handelingen. - Activeer optioneel de modus domeinmigratie en geef het nieuwe domein op.
Vóór elk herstel wordt automatisch een beschermde databasesnapshot aangemaakt: als het herstel halverwege mislukt, keert u binnen enkele minuten terug naar de begintoestand. De tabellen van de plugin (df_backup*) worden nooit overschreven, zodat uw back-upgeschiedenis behouden blijft, ook als u een versie van zes maanden geleden herstelt.
Een herstel overschrijft de database en de bestanden ter plaatse. Controleer het geselecteerde bereik en vermijd het herstellen van een oude versie op een productieomgeving die intussen bestellingen is blijven registreren, tenzij het om een gecontroleerde migratie gaat.
Domeinmigratie
In de migratiemodus herschrijft de plugin de sales_channel_domain en past hij een best-effort vervanging toe op de tekstkolommen van de vertaaltabellen (CMS, producten, categorieën) evenals op seo_url, zodat de kloon meteen op zijn eigen domein te bezoeken is.
Planning, rotatie en onderhoudsmodus
- Frequenties: daily (doeltijdstip), weekly (dag en tijdstip), monthly (dag van de maand en tijdstip). Tolerantievenster van 30 minuten en deduplicatie van 60 minuten.
- Rotatie: op aantal te bewaren back-ups en op leeftijd in dagen. Back-ups die als beschermd zijn gemarkeerd (met name snapshots van vóór een herstel) worden nooit geroteerd.
- Onderhoudsmodus, optioneel: zet de sales channels tijdens de databasedump in onderhoud voor een perfecte transactionele consistentie, nuttig bij shops met zeer veel bestellingen.
Meldingen en audit
- E-mail via Symfony Mailer (succes, mislukking of beide naar keuze).
- Webhook met automatische detectie van het formaat: Slack, Discord, Microsoft Teams of generieke JSON.
- Waarschuwing in de module als er sinds N dagen geen geslaagde back-up is.
- Auditlogboek: elke gevoelige handeling (starten, herstellen, verwijderen, verifiëren, downloaden) wordt vastgelegd met de beheerder, het IP-adres en de tijdstempel.
FAQ en probleemoplossing
Werkt de plugin zonder shell_exec? Ja. Er wordt geen enkele aanroep gedaan naar shell_exec, exec, passthru of mysqldump. Alles gebeurt in pure PHP (DBAL, ZipArchive, cURL, native ftp-functies).
Mijn back-ups vertrekken niet automatisch. Controleer of er een Messenger-worker draait (of dat de web-cron regelmatig wordt aangeroepen) en of de ScheduledTask van DfBackup actief is in Shopware. Zonder worker of web-cron kan de planning niet draaien.
De dump mislukt op een grote tabel. De keyset-paginering verwerkt grote tabellen normaal gesproken prima; controleer of de gehele primaire sleutel aanwezig is en verhoog zo nodig het geheugen van de worker (--memory-limit).
Een archief krijgt de status corrupted. De SHA-256 komt niet overeen: de upload of de schrijfactie is afgekapt. Start de back-up opnieuw en controleer de vrije schijfruimte en de quota van het externe backend.
Hoe controleer ik een back-up zonder hem te herstellen? De knop Verifiëren berekent de SHA-256 opnieuw en controleert voor versleutelde archieven de HMAC, zonder iets te herstellen.
Wat gebeurt er bij het verwijderen? Met de optie om de gegevens te wissen worden de vier tabellen df_backup* verwijderd en de configuratie gewist. De bestanden onder var/df-backup worden niet automatisch verwijderd: download uw recente back-ups voordat u de plugin verwijdert.