PHPackages                             edgaras/laravel-system-backup - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [File &amp; Storage](/categories/file-storage)
4. /
5. edgaras/laravel-system-backup

ActiveLibrary[File &amp; Storage](/categories/file-storage)

edgaras/laravel-system-backup
=============================

Laravel package to perform a full system backup, compress it into a zip file, and optionally email it or upload to the cloud.

v0.2.0(9mo ago)0259MITPHPPHP ^8.2

Since Jun 12Pushed 9mo ago1 watchersCompare

[ Source](https://github.com/Edgaras0x4E/laravel-system-backup)[ Packagist](https://packagist.org/packages/edgaras/laravel-system-backup)[ RSS](/packages/edgaras-laravel-system-backup/feed)WikiDiscussions master Synced today

READMEChangelog (2)Dependencies (9)Versions (3)Used By (0)

Laravel System Backup v0.2.0
============================

[](#laravel-system-backup-v020)

Laravel package to perform a full system backup, compress it into a zip file, and optionally email it or upload to the cloud.

---

Features
--------

[](#features)

- Zips the entire Laravel application directory.
- **Exclude list** to skip unnecessary files (e.g. `.env`, `vendor`, `node_modules`).
- Optional **AES‑256 encryption** for the archive.
- **Retention policy** – keep only *N* most recent backups.
- Upload to any configured **filesystem disk** (e.g. [Azure](https://github.com/Azure-OSS/azure-storage-php-adapter-laravel), S3) and generate a **signed URL**.
- Send a configurable **email** with the local path or cloud link.
- Artisan command `backup:system` with `--email` flag.

---

Changelog
---------

[](#changelog)

### v0.2.0

[](#v020)

- **Fixed retention off‑by‑one (cloud)**: deletes one too many/too few backups.
- **Signed local download links in emails**: generate a temporary signed URL to the provided download route instead of emailing a local filesystem path.
- **Route configurability**: added prefix for the download route.
- **Safer, scalable cloud uploads**: stream file to the disk; gracefully handle drivers without temporaryUrl.

---

⚠️ **Disclaimer**

This package is functional but **not thoroughly tested** in production environments. Use with caution and verify backups independently before relying on it for critical systems.

---

Requirements
------------

[](#requirements)

- PHP 8.2+
- Laravel 12

---

Installation
------------

[](#installation)

```
composer require edgaras/laravel-system-backup
```

Publish assets:

```
# Mail blade view
php artisan vendor:publish --tag=backup-mail-view

# Config file
php artisan vendor:publish --tag=backup-config
```

---

Usage
-----

[](#usage)

### Manual backup

[](#manual-backup)

```
php artisan backup:system          # create archive only
php artisan backup:system --email  # create archive and send e‑mail
```

---

Configuration (`config/backup.php`)
-----------------------------------

[](#configuration-configbackupphp)

```
return [
    // Where archives are stored locally
    'backup_path' => storage_path('app/backups'),

    // Backup file name
    'zip_name' => 'system-backup-' . date('YmdHis') . '.zip',

    // Patterns to exclude from the archive
    'exclude' => [
        '.env',
        '.env.*',
        '.git',
        '.gitignore',
        'composer.lock',
        'vendor',
        'node_modules',
        'storage/app/backups',
        'storage/framework',
        'storage/logs',
    ],

    // Optional AES‑256 encryption password (set in .env)
    'encryption_password' => env('BACKUP_ENCRYPTION_PASSWORD', null),

    // Add .htaccess (Deny from all) to backup_path
    'restrict_access' => true,

    // Keep only the N newest archives (local or cloud)
    'retention' => [
        'enabled' => true,
        'max_backups' => 5,
    ],

    // Cloud storage
    'cloud' => [
        'enabled' => false,           // true = upload instead of storing locally
        'disk'    => 'azure',         // any disk defined in config/filesystems.php
        'path'    => 'backups/path',  // folder inside the disk
        'signed_url_expiry' => 24,    // link validity in hours
    ],

    // Email notification
    'email' => [
        'enabled'    => false,
        'recipients' => ['hello@demomailtrap.co'],
        'subject'    => 'System Backup Completed',
        'body'       => 'Your system backup has finished successfully. Download using the link below (valid for 24 hours):',
        'from' => [
            'address' => env('MAIL_FROM_ADDRESS', 'hello@demomailtrap.co'),
            'name'    => env('MAIL_FROM_NAME', 'Laravel Backup'),
        ],
        'use_cloud_link' => false,
    ],
    // Signed local download link expiry, in hours
    'download_link_expiry' => 24,

    // Route that serves local downloads (signed)
    'download_route' => [
        'middleware' => ['web', 'signed'],
        'prefix' => '/backups/download'
    ],
];
```

### Environment variables

[](#environment-variables)

```
BACKUP_ENCRYPTION_PASSWORD=secretpass
```

###  Health Score

32

—

LowBetter than 69% of packages

Maintenance58

Moderate activity, may be stable

Popularity16

Limited adoption so far

Community4

Small or concentrated contributor base

Maturity40

Maturing project, gaining track record

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~110 days

Total

2

Last Release

277d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/479996?v=4)[Edgaras](/maintainers/Edgaras)[@edgaras](https://github.com/edgaras)

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/edgaras-laravel-system-backup/health.svg)

```
[![Health](https://phpackages.com/badges/edgaras-laravel-system-backup/health.svg)](https://phpackages.com/packages/edgaras-laravel-system-backup)
```

###  Alternatives

[roots/acorn

Framework for Roots WordPress projects built with Laravel components.

9762.4M131](/packages/roots-acorn)[flarum/core

Delightfully simple forum software.

201.4M2.3k](/packages/flarum-core)[illuminate/notifications

The Illuminate Notifications package.

513.1M1.1k](/packages/illuminate-notifications)[laravel/pulse

Laravel Pulse is a real-time application performance monitoring tool and dashboard for your Laravel application.

1.7k15.1M132](/packages/laravel-pulse)[psalm/plugin-laravel

Psalm plugin for Laravel

3355.3M346](/packages/psalm-plugin-laravel)[laravel/folio

Page based routing for Laravel.

603583.7k33](/packages/laravel-folio)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
