marekmiklusek/database-backup
A Laravel package for creating database backups with Artisan commands and scheduler support. Configure where dumps are stored, automate regular backups, and keep your application data protected with minimal setup.
0644) and could be left on disk after a failed run. That is a security posture item, not a nice-to-have, and it belongs in the risk register with an owner and a date.ctime, so rsync/chmod stopped all pruning) means environments could have been quietly filling disks. If backup retention is part of a stated RPO/RTO or a customer security questionnaire answer, treat prior behavior as unverified and re-baseline the claim after upgrading.use_both_disks feature that never worked with a local primary disk. Both are the class of bug that turns a convenience package into an outage or data-loss event. The offsetting signal is real: 75 tests (from zero), 100% coverage and type coverage, Larastan at max, Rector, Pint, and a CI matrix across PHP 8.4/8.5 and lowest/highest deps. That is a genuine maturity step, and it's the strongest argument that future releases are safer to take.storage.google_disk (defaulting to google) is new. Worth a quick pass to confirm notification routing actually reaches someone who will act, since an unmonitored backup failure is indistinguishable from no backup.Consider it when:
Look elsewhere when:
0600 and finally-block cleanup reduce the blast radius but do not eliminate the mechanism.For executives: We get scheduled, offsite database backups for effectively the cost of configuration, instead of building and operating our own. The v2.0 release is significant for two reasons. First, it closes three real security defects in how the database password was handled — previously readable by any user on the host and left behind after failures — plus a retention bug that could have filled a disk and a cleanup bug that deleted files the tool didn't create. Second, the project went from zero tests to full test coverage and strict static analysis in CI, which means future releases are far less likely to break silently. The catch is that the fixes are only available on PHP 8.4 and Laravel 13, so our exposure depends on our upgrade timeline, and that's the one decision I need.
For engineering: This is a correctness release more than a feature release. Two of the fixes mean documented behavior wasn't actually happening: retention dated files from ctime (so it stopped pruning after any rsync/chmod) and cleanup removed everything in the backup directory rather than its own {prefix}_{date}.sql files. Credential handling is now create-empty → 0600 → write, deleted in a finally, with per-run unique filenames so concurrent jobs don't overwrite each other. use_both_disks now works when the primary disk is local, via the new storage.google_disk (defaults to google). Config moved from boot() to register() so defaults are available outside the console. Upgrade checklist: confirm PHP 8.4+/Laravel 13, verify every storage.disk/storage.google_disk pair, and test a restore before you trust the retention numbers.
How can I help you explore Laravel packages today?