nowo-tech/site-backup-bundle
nowo-tech/site-backup-bundle is a Symfony bundle for creating, scheduling, and managing backups of your site, including files and databases. It offers configurable backup profiles and storage targets to simplify reliable backup and restore workflows.
Framing correction (material to the decision). The named artifact is nowo-tech/site-backup-bundle, a Symfony bundle, not a Laravel package. It is packaged as a bundle with a DI extension, compiler-pass wiring, Twig UI, and Symfony-version constraints (^7.0 || ^8.0, PHP >=8.2 <8.6). Any assessment that assumes a Composer-install-and-go Laravel integration will be wrong by default. The realistic options are (a) adopt it inside a Symfony service/console app that sits beside the Laravel estate, or (b) vendor/extract its backup-and-restore services behind a Laravel service provider. Both are more work than the package name implies, so this must be scoped before commitment.
Architecture fit. The functional scope — integral website backups, checksum-based integrity verification, and a restore UI explicitly designed not to break the app mid-restore — maps well onto a recurring operational need for any PHP web estate: verifiable backups plus a restore path that does not require taking the site down. The "safe restore" claim is the only genuinely differentiating capability here; most backup tooling stops at producing an archive and leaves restore as a manual, outage-inducing runbook. If that claim holds under scrutiny, it is the reason to look at this package at all. Symmetry with the stack (PHP, Composer, Symfony conventions, strict typing, final classes, constructor injection) means a Symfony-side team can read and patch it without a translation layer.
Integration feasibility. Feasible in Symfony; non-trivial in Laravel. A Symfony bundle's value is delivered largely through framework integration — extension config, tagged services, Twig templates, security context for the restore UI. Laravel has no direct equivalent, so "integration" becomes "port": reimplement configuration, replace Twig views with Blade or ship them as static assets, rewire authorization to Laravel gates/policies, and replace Symfony console commands with Artisan commands. The underlying backup/restore logic may be portable if it is isolated in small services, but that must be verified by inspection, not assumed. The package's own guidance ("preserve public extension points", "keep DI extension, compiler pass wiring, and form type options backward compatible") confirms the public surface is Symfony-shaped, which is exactly the surface you would have to re-create.
Technical risk. High, concentrated in three places:
2026-10-24) is in the future relative to normal intake, and the composite score (≈19.8) is low. Treat the release metadata as unreliable until confirmed against the repository's actual tags and CHANGELOG. An actively maintained bundle and an abandoned one look identical from the numbers given.Key questions to put to the maintainer or resolve by inspection.
max_execution_time?Stack fit. Good fit for a Symfony 7.4/8.x estate on PHP 8.2–8.5. Poor fit for a Laravel-first estate as a drop-in. If the organization is primarily Laravel, the honest framing is "candidate engine to port or wrap," not "candidate dependency to install." If a Symfony service already exists in the estate — an admin console, an internal ops tool, a legacy app being maintained — that is the natural host.
Migration path. Three viable routes, in ascending order of effort:
Compatibility. Hard constraints are explicit and tight: PHP >=8.2 <8.6, Symfony ^7.0 || ^8.0, with Symfony 8.x requiring PHP 8.4+. Confirm the host application's PHP minor today and its upgrade runway — the <8.6 ceiling means this bundle will block a PHP 8.6 upgrade until upstream widens the constraint, which is a scheduled piece of future work, not a hypothetical. Confirm the host's Symfony minor is 7.4, 8.0, or 8.1. Any Laravel route inherits none of this compatibility guarantee and must re-validate independently.
Sequencing.
rsync and a shell-out.Maintenance. The ongoing cost is not installation but ownership of a security-sensitive, low-adoption dependency. With zero dependents there is no downstream community absorbing upgrade work, no crowd-sourced bug discovery, and no guarantee that a PHP 8.6 or Symfony 8.2 release arrives before it blocks your own upgrade. Budget for the realistic case where the team is the maintainer: pinning versions deliberately, tracking upstream commits, and being prepared to patch locally. If route 2 or 3 is chosen, add permanent fork-rebase cost to the estimate — this is the single largest hidden line item.
Support. Support is effectively the maintainer's goodwill plus internal expertise. There is no vendor SLA. Ramp-up is therefore an internal knowledge problem: at least two engineers must be able to run, verify, and restore from a backup unaided. A restore procedure that only one person has executed is not a backup strategy, it is a single point of failure wearing a runbook.
Scaling. Backup cost scales with data volume and with the number of sites; restore cost scales with data volume and with the acceptable restore window. Two scaling questions dominate: whether the backup engine streams or buffers (buffering a multi-gigabyte database through PHP memory is a hard ceiling), and whether backups run concurrently across sites without contending for disk I/O and database connections. Scheduled backups competing with peak traffic on the same host is the common failure pattern; the sidecar placement in the integration plan mitigates it but does not eliminate it. Retention and pruning must be configured explicitly — unbounded archives filling a disk will eventually take down the very app the backups are meant to protect.
Failure modes. Enumerate them plainly and make sure each has an owner and a detection signal:
Ramp-up. Estimate roughly one engineer-week to first working sidecar backup, plus two to three weeks before a second engineer can independently perform and verify a restore. The technical ramp-up is modest — the code follows modern PHP and Symfony conventions and is readable. The operational ramp-up is the real cost: building the muscle memory, the runbook, the monitoring, and the drill cadence. Treat the first successful restore drill, not the first successful backup, as the milestone that matters.
How can I help you explore Laravel packages today?