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(7mo ago)011MITPHPPHP ^8.2

Since Jun 12Pushed 7mo 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 1mo ago

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

30

—

LowBetter than 64% of packages

Maintenance63

Regular maintenance activity

Popularity5

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

228d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/eb360d69caebafdf5339cd93817328b6fa1784f023009a6c27d84151bf212b01?d=identicon)[Edgaras](/maintainers/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.

9682.1M97](/packages/roots-acorn)[laravel/pulse

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

1.7k12.1M99](/packages/laravel-pulse)[flarum/core

Delightfully simple forum software.

211.3M1.9k](/packages/flarum-core)[tightenco/jigsaw

Simple static sites with Laravel's Blade.

2.2k438.5k29](/packages/tightenco-jigsaw)[laravel/folio

Page based routing for Laravel.

608453.9k27](/packages/laravel-folio)[illuminate/notifications

The Illuminate Notifications package.

483.0M967](/packages/illuminate-notifications)

PHPackages © 2026

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