Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Backups Laravel Package

tiknil/backups

A Laravel package for backing up your application's database and files. Configure storage disks, retention, and notifications, then create and restore backups through Artisan commands or the scheduler.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. Largely unchanged from the v0.2.0 assessment: the package remains a Laravel-native console utility (backup create → store → restore) with low coupling to application domain code and no schema ownership. The new information from v0.4.1 is that the storage layer is not purely Laravel filesystem drivers — the "Fix per supporto a rclone < 1.60" note confirms the package shells out to rclone for remote transfer. That materially sharpens the architecture picture: this is a wrapper around external binaries (rclone for transfer, and presumably mysql/pg_restore-style tools for data), not a pure-PHP implementation. Fit remains strong in standard Laravel monoliths and LEMP deployments, but now explicitly requires that the runtime image contain a supported rclone binary — which disqualifies naive distro-base-image deployments where rclone is absent or stale.

Integration feasibility. Still low-risk at the PHP layer (no migrations, no service provider contract changes implied). The feasibility delta is infrastructure: rclone must be installed, version-pinned, and kept in step with the package. This is a small but non-trivial addition to base images, CI runners, and any scheduler/job pod that performs backups. The restore gate from the prior assessment is unchanged — privileged credentials, quiescing a live database, and blast-radius decisions are still the binding constraints, not the code.

Technical risk. The dominant risk remains an irreversible destructive verb (backup:restore) with undocumented safety affordances (dry-run, confirmation, environment guard, scope, encryption/key handling, pre-v0.2.0 format compatibility) — none of that is addressed by this release. Newly surfaced risks: (a) external binary compatibility matrix — a fix specifically for rclone < 1.60 implies the package has a version floor that has already shifted once, so an environment pinned to an older rclone can silently regress on transfer integrity; (b) supply chain — rclone is a third-party binary with its own CVE history, and the package now inherits that surface; (c) version drift in the assessment itself — this review was written at v0.2.0 and we are now at v0.4.1, meaning two minor releases (v0.3.x, v0.4.0) landed whose contents are not in the evidence provided here. That is a documentation/change-visibility gap, not a code defect, but it means this assessment is partly stale and should be treated as such until those releases are reviewed.

Key questions. Retained from before: (1) dry-run/--pretend and interactive confirmation, and any production guard? (2) restore scope and point-in-time targeting? (3) are pre-v0.2.0 backups restorable — is there a format/version guarantee? (4) how are encryption keys and credentials supplied? (5) documented least-privilege permissions path? (6) managed-DB support (RDS/Cloud SQL) or raw shelling out? (7) does restore take the app offline / lock / drain queues? New for this release: (8) what is the minimum supported rclone version now, and is there a startup/health check that fails loudly on an unsupported binary rather than failing at backup time? (9) is rclone required for all disks or only remote ones (does a local-disk deployment avoid the dependency entirely)? (10) is the rclone invocation argument-quoted and injection-safe? (11) what changed in v0.3.x and v0.4.0, and were any of those changes breaking for the v0.2.0 integration assumptions?

Integration Approach

Stack fit. Assumes a conventional Laravel stack (PHP 8.x, artisan scheduler, filesystem disks, MySQL/PostgreSQL) plus a supported rclone binary on the host/container. Invocation remains php artisan backup:restore, so it still slots into existing runbooks and CI without new application infrastructure. It fits container-immutable/ephemeral deployments only with an explicit decision on both (a) where restore runs (a job pod with DB access, not the web tier) and (b) how rclone is provisioned and version-pinned in that image. Alpine/slim base images will need an explicit install step; distro repos often ship rclone older than 1.60 and must not be relied on.

Migration path. This is still adoption rather than replacement, but the path now includes a binary: (a) install and pin the package and a known-good rclone in a non-production environment; (b) validate backup:run + backup:restore round-trip against a disposable database, exercising the actual remote disk (not just local); (c) verify a pre-v0.2.0 backup restores, or confirm it does not and document the cutover; (d) record the exact package + rclone version pair as the supported combination; (e) only then promote. Do not decommission an existing solution (spatie/laravel-backup, cloud-native snapshots) on the strength of one feature — run in parallel and compare restore fidelity first.

Compatibility. Two compatibility axes now, not one. First, the package: Laravel and PHP constraints and DB driver support are still unverified from the release notes. Second, the binary: v0.4.1 is explicitly a compatibility fix for older rclone, which tells us the package's rclone floor has moved at least once — treat the package↔rclone pairing as a pinned tuple, upgrade them together, and test downgrade/upgrade of one without the other before assuming it is safe. Critically, backup-format compatibility across v0.1.x → v0.4.x remains unproven; any backup taken before restore existed has never been restore-tested by this tooling and must be treated as unverified. And note the assessment gap: v0.3.x and v0.4.0 were never reviewed, so current compatibility claims are inferred, not confirmed.

Sequencing. 1) Re-baseline: pull changelogs for v0.3.0, v0.3.x, v0.4.0, and v0.4.1 and diff against the v0.2.0 assumptions. 2) Pin package + rclone in staging and bake rclone into the base image. 3) Restore drill against a scratch database using the real remote disk, timed, with results recorded. 4) Document the runbook (who may run it, how to select a backup, how to abort, supported package/rclone versions). 5) Enable in production with access restrictions and audit logging. 6) Calendarise recurring restore drills — the acceptance criterion is "restore verified within the last N days", not "backup job green". 7) Only after a clean drill cycle, consider mapping to a formal RTO/RPO statement.

Operational Impact

Maintenance. Two maintenance surfaces now. Code-side remains low — console commands, no runtime surface. Binary-side is new and recurring: rclone must be installed, version-pinned, patched for CVEs, and re-validated against the package on each upgrade. The package is still pre-1.0 (v0.4.1), so no API/behaviour stability guarantee — pin the version and expect breaking changes in minor releases, which is exactly why the unreviewed v0.3.x/v0.4.0 gap matters. Procedural cost is unchanged: restore runbooks, credential rotation for restore-capable identities, drill records.

Support. Still a small-maintainer project. The v0.4.1 note is a single line, terse, and not in English — a low documentation-detail signal that should be priced into support expectations. Practically: confirm the issue tracker responds, confirm restore and remote-transfer paths have upstream tests, and assign a named internal owner for the runbook. An unowned restore command is a liability, not a control.

Scaling. Unchanged in shape: backups scale with data volume on a schedule, restores scale with the same volume but are on-demand and latency-sensitive. rclone in the path adds a transfer-throughput dimension and a second place for timeouts/retries to hide — large remote backups may be bounded by rclone throughput and concurrency settings rather than by the database. Multi-hour restore behaviour (timeouts, memory, streaming vs. loading into memory) still must be tested at representative volume, not on an empty dev DB. Multi-node/read-replica topologies still need an explicit decision on the restore target.

Failure modes. Retained: partial restore leaving the database half-applied; restore silently succeeding against the wrong backup or environment; missing/corrupt encryption keys discovered only at restore time; permission failures mid-restore; restored schema drifting from current application code; someone running backup:restore in production without a confirmation gate. Newly added: rclone version mismatch on a host that was upgraded independently of the package, producing transfer failures or, worse, a "successful" backup that is incomplete or unreadable at restore time — the exact class of silent failure that makes backups worthless; rclone absent from a rebuilt container image (works until the next deploy); and third-party binary CVE exposure with no patch cadence defined. Mitigations: health-check rclone version at boot or at command start and fail loudly, pin package and rclone as a tuple, mandatory pre-restore snapshot, environment guard on the command, dry-run where available, and a second pair of eyes on any production restore.

Ramp-up. Low for developers (still one artisan command); low-to-moderate for platform/ops, who now own an extra pinned binary in the image and its patch cadence. Moderate for the team as a whole, because the value remains organisational: adopt a drill cadence, record outcomes, treat restore verification as a tracked control. Budget roughly one sprint for initial enablement plus a re-baseline of the unreviewed v0.3.x/v0.4.0 releases, and a standing recurring cost of a drill per month per environment. Do not present this to stakeholders as "DR solved" — the defensible claim is "we can now test our DR assumptions", and, after v0.4.1, "we have a known-good rclone and package version pair we have actually restored from."

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
diephp/sequences
users-au/socialite-provider
twidpay/twid-logger
mrnewport/laravel-plaid
mrnewport/laravel-repo
mrnewport/laravel-docsign
mrnewport/laravel-stow
mrnewport/laravel-flow
mrnewport/laravel-priceable
mrnewport/laravel-nestedterms
fredmeng/laravel-apidoc-generator
itstructure/laravel-multilingual-tools
pdustdar/elasticsearch
markupai/php-sdk
rlacerda83/lumem-microservice-shipment
uni-method/symfony-lib
tacticmedia/scim-server-bundle
neika-ai/symfony-bundle
mattleads/agent-publishing-bundle
glavweb/framework-bundle