Backup Manager Plugin
Demo URL: https://october-demo.renatio.com/backend/backend/auth/signin
Login: backup
Password: backup
Backup your application with ease.
The backup is a zip file that contains all files in the directories you specify along with a dump of your database. The backup can be stored on any of the filesystems you have configured in October. You can backup your application to multiple filesystems at once. In addition to making the backup, the package can also clean up old backups, monitor the health of the backups, and show an overview of all backups. The plugin can also notify you via mail, Discord or a webhook when something goes wrong with your backups, and restore the database from any backup it created.
Features
- A backup database and application files with mouse click
- Restore the database from any backup with a console command
- S3, FTP, SFTP, Dropbox storage support
- MySQL, PostgreSQL, SQLite and Mongo databases support
- A configurable scheduler for automatic backups
- Backups triggered over HTTP, for hosting without a system cron
- Queued backups that survive execution time limits
- A history of every backup run, with filters, bulk delete and automatic retention
- Per-action permissions, enforced on the server rather than only hidden in the interface
- Automatic cleanup of old backups
- Extensive settings options
- Encryption and password protection
- Verification of every created archive
- Monitoring the health of all backups
- Mail, Discord and webhook notifications
Requirements
This plugin requires PHP 8.3, with the ZIP module, October CMS 4.0 and Laravel 12.40 or higher. It's not compatible with Windows servers.
If you are using an older version of Laravel and October, take a look at one of the previous versions of this plugin.
The package needs free disk space where it can create backups. Ensure that you have at least as much free space as the total size of the files you want to backup.
Make sure mysqldump is installed on your system if you want to backup MySQL databases.
Make sure pg_dump is installed on your system if you want to backup PostgreSQL databases.
Make sure mongodump is installed on your system if you want to backup Mongo databases.
Why is this a paid plugin?
Something that is free has little or no perceived value. Users do not commit to free products and only use them until something else looks nice and is free comes along. When I invest my time in the development of a new plugin I commit to supporting and maintaining it. I ask my customers to do the same. I do not make money from this plugin by advertisements, upgrades or additional services like hosting or setup.
Did you know that 30% of your purchase or donation goes to help fund the October Project?
My plugins take many hours to develop (40-120+) and even more hours to document and maintain. My paid plugins have to pay for both this time, and the time I am spending on free plugins and less successful paid plugins. This means that it will take even a successful plugin years to become profitable. Please consider buying an extended license if you want me to continue to maintain these plugins for the very small fee I ask in return or hire me for adding functionality that you feel is missing but valuable.
Like this plugin?
If you like this plugin, give this plugin a Like or Make donation with PayPal.
My other plugins
Please check my other plugins.
Support
Please use GitHub Issues Page to report any issues with plugin.
Reviews should not be used for getting support or reporting bugs, if you need support please use the Plugin support link.
Icon made by Darius Dan from www.flaticon.com.
This plugin is also included into the following bundle
Installation via Command Line
php artisan plugin:install Renatio.BackupManager
Usage
After installation plugin will register backend Backups menu position.
Application backup button will create backup with all project files and database dump file. To change which files will be included see plugin Settings. Default settings will take project base path and exclude vendor and node_modules directories from it.
Database backup button will create only database backup.
Clean old backups button will clean up old backups based on the plugin Settings.
Settings button will redirect you to the plugin settings.
Permissions
Access is granted per action, so an administrator can be allowed to run a backup without being able to delete one, or to read the history without being able to clear it. Assign them under Settings → Administrators on the Backups tab.
| Permission | What it unlocks |
|---|---|
| Manage backups | The backups page itself. Required for everything else on that page. |
| Create backups | The Application backup and Database backup buttons. |
| Clean old backups | The Clean old backups button. |
| Delete backups | The delete icon on each row, the checkboxes and Delete selected. |
| Download backups | The download icon, and the download route behind it. |
| Copy restore command | The terminal icon that copies the restore command. |
| Manage history | The History page itself. |
| Delete history entries | The delete icon on each row, the checkboxes, Delete selected and Clear history. |
| Manage settings | The plugin settings, and the Settings button in the toolbar. |
Every action is checked on the server, not only hidden in the interface, so a hand-written request cannot get around a missing permission. Administrators marked as super users bypass all of these, as everywhere else in October.
Copy restore command only hides the button. Restoring runs from the console, so anybody with shell access can restore regardless of what this permission says.
Restoring a backup
Restoring replaces your database with the one stored inside a backup archive. It is available from the console only, because it is destructive and cannot be undone. In the backups list, the orange terminal button copies the matching restore command to your clipboard so you can paste it into a terminal.
php artisan backup:restore php artisan backup:restore --path="October CMS/2026-01-15-09-20-58.zip" --disk=local
| Option | Description |
|---|---|
--path |
Path to the backup archive on the disk. Required when running non-interactively. |
--disk |
Disk the backup is stored on. Defaults to the disk selected in the backups list. |
--connection |
Database connection to restore into. Defaults to the application default. |
--password |
Password for an encrypted archive. Defaults to the one saved in the settings. |
--skip-safety-backup |
Do not create a safety backup first. Leaves you without a way back. |
--force |
Skip the confirmation prompt. Required for unattended runs. |
Only the database is restored. Project files inside the archive are never touched. If you need them back, unpack the archive manually.
Along with the safety backup path, the command prints two ways to roll back: the backup:restore command and a raw
database client pipeline (unzip -p ... | mysql ...) for the case where the application is so broken that artisan
itself no longer runs. The pipeline never contains the database password; the client asks for it.
You will be logged out. The dump contains
backend_usersandsessions, so accounts return to the state they were in when the backup was taken. Any account created afterwards will be gone.Restoring is not transactional. Schema changes in MySQL cannot be rolled back, so an import that fails halfway leaves the database in an inconsistent state. This is why a safety backup is taken by default - keep the path it prints.
Tables that are not part of the dump, such as tables excluded from the backup, are left untouched by a restore.
When the archive holds dumps of several databases, the one matching --connection is used. It is found by its database
name first, then by the connection name, so back up two databases at once and each can still be restored on its own. If
no single dump matches, the restore stops and lists what the archive contains instead of guessing.
PostgreSQL and SQLite
Dumps for these engines are created without drop statements, so they can only be restored into an empty database. Prepare one before restoring, for example by recreating the schema.
Requirements
Restoring uses the native client of your database engine, the same way backups are created with mysqldump. Make sure
mysql, psql or sqlite3 is installed and available in PATH, and that proc_open is enabled.
If the application no longer boots
A safety backup is always stored unencrypted, so it can be imported without this application:
unzip -p "storage/app/October CMS/safety-2026-01-15-09-20-58.zip" "db-dumps/*.sql" > /tmp/recover.sql mysql -u USER -p DATABASE < /tmp/recover.sql
Maximum execution time error
When you experience Maximum execution time of ... seconds exceeded error than most likely application backup is too large and PHP cannot do this process in a single request.
What can I do?
- Change max_execution_time property value in your PHP configuration.
- Use Scheduler to perform automatic backups (recommended).
- Use Console commands to perform backups.
- Enable Queue backups in the settings, see Queued backups.
Queued backups
Backups started from the backend normally run inside the web request, which means a large backup can hit the PHP execution time limit. Enabling Queue backups on the Destination tab dispatches the work to the queue instead, so the request returns immediately and the backup keeps running in the background.
This requires a running queue worker:
php artisan queue:work
With queueing enabled only a flash message is shown after clicking, because the backup runs in the background. Open the History page once the job completed to see its output.
Leave this setting off if you do not run a queue worker, otherwise backups started from the backend will never run.
Each queued backup reads the settings when it runs, so a change takes effect on the next backup without restarting the worker.
Backup history
The History page under the Backups menu records every backup and cleanup run: when it happened, how long it took, how large the archive was and whether it succeeded. Clicking an entry shows the output of that particular run, so a failure stays readable long after it happened.
The history is a journal of what the plugin did, not a list of the archives that exist. Backups removed straight from the disk, or created on another server, leave no trace in it - the backups list itself always reads the disk, so it stays accurate regardless.
Entries can be removed in three ways: the trash icon on a row removes that one entry, checking rows enables Delete selected in the toolbar, and Clear history wipes the page clean. None of them touch the archives themselves - removing an entry only forgets that the run happened. Entries also expire on their own, see Keep history entries for days in the settings.
Settings
This plugin ships with settings page. Go to Settings, and you will see a menu item Backup Manager listed under Backup section.
Database
| Property | Description |
|---|---|
| Databases | The names of the connections to the databases that should be backed up. MySQL, PostgreSQL, SQLite and Mongo databases are supported. |
| Exclude tables | Those tables will not be included in backup. |
| Compress database dump | The database dump can be compressed to decrease disk space usage. |
Files
| Property | Description |
|---|---|
| Include | The list of directories and files that will be included in the backup. Leave empty to backup whole October project. |
| Exclude | These directories and files will be excluded from the backup. Directories used by the backup process will automatically be excluded. |
| Follow links | Determines if symlinks should be followed. |
| Ignore unreadable directories | Determines if it should avoid unreadable folders. |
| Verify backup | Checks that the created archive can be opened, is not empty and contains the expected number of files. Adds extra time to each backup. |
Destination
| Property | Description |
|---|---|
| Filename prefix | The filename prefix used for the backup zip file. |
| Name | The name of this application. |
| Disks | The disk names on which the backups will be stored. |
| Queue backups | Runs backups through the queue instead of the web request. |
Scheduler
Configure how often plugin will run automatic tasks for database backup, application backup, clean old backups and monitor the health of all backups actions.
Important note: For scheduled tasks to operate correctly you must set up the scheduler: https://docs.octobercms.com/4.x/setup/scheduler.html
Allow external trigger
Shared hosting often has neither a system cron nor console access, which leaves the scheduler above with nothing to run it. Switching Allow external trigger on publishes three addresses, one per task, that run it over HTTP instead:
https://example.com/backupmanager/trigger/<token>/db https://example.com/backupmanager/trigger/<token>/app https://example.com/backupmanager/trigger/<token>/clean
Point an external cron service at whichever one you need - cron-job.org, EasyCron, or any uptime monitor that fetches a
URL on a schedule. A 200 means the task ran, a 500 means it failed, so a monitoring service will tell you when
backups stop working.
The address is the password. Anybody who knows it can run the task. Keep it out of tickets, commit messages, screenshots and anything else that gets shared. Switch the trigger off and the address stops working immediately, even though the token stays the same. If an address did leak, the Generate new addresses button below the list replaces the token, and every old address stops working at once.
Use the addresses over HTTPS only: the token travels in the URL, so on plain HTTP it would cross the network in cleartext, and URLs also end up in web server, proxy and cron service logs. Treat those logs as sensitive.
The endpoint answers 404 to everything it refuses - a wrong token, an unknown task, or the trigger being switched off
all look identical from outside, so probing for it tells an attacker nothing. It accepts five requests per minute per
IP address and ten per minute across all addresses combined; anything beyond that gets 429, which keeps whoever
finds the address from filling the disk with parallel backups.
With Queue backups enabled the request returns as soon as the task is queued rather than waiting for the backup to finish, which keeps a large backup from hitting the timeout of whichever service is calling it. Either way the run is recorded on the History page like any other.
Security
Here you can specify password protection for backups. You will be asked to enter this password in order to unzip the backup file.
Password
Remember to use long strings and to keep your password safe – without it, you will never be able to open your backup .
Leave it blank if you want to keep your backup without a password.
Encryption
It's common to encrypt backups before storing them somewhere to prevent unauthorized access.
It's important to try this workflow and also to decrypt a backup archive, so you know that it works and you have a working backup restore solution.
Warning: the default MacOS app to (un)archive ZIPs seems unable to open/extract encrypted ZIP files. You should use an app like The Unarchiver or BetterZip.
Cleanup
| Property | Description |
|---|---|
| Keep all backups for days | The number of days for which backups must be kept. |
| Keep daily backups for days | The number of days for which daily backups must be kept. |
| Keep weekly backups for weeks | The number of weeks for which one weekly backup must be kept. |
| Keep monthly backups for months | The number of months for which one monthly backup must be kept. |
| Keep yearly backups for years | The number of years for which one yearly backup must be kept. |
| Delete oldest backups when using more megabytes than | After cleaning up the backups remove the oldest backup until this amount of megabytes has been reached. |
| Keep history entries for days | History entries older than this number of days are removed daily by the scheduler. Set to 0 to keep the history forever. |
Monitoring
A backup is considered unhealthy if the date of the latest backup is too far in the past to be useful or if the amount of storage space required for all backups is not available.
| Property | Description |
|---|---|
| Newest backups should not be older than days | Send a notification when newest backup will be older than given days. Default to 1 day. |
| Storage used may not be higher than megabytes | Send a notification when storage used for backups will be higher than given megabytes. Default to 5000 megabytes. Setting to 0 means the monitor will consider that the backup can use unlimited storage. |
Dumping the database
The mysqldump/pg_dump are used to dump the database. If they are not installed in a default location, you can add a
key named dump.dump_binary_path in October database.php config file. Only fill in the path to the binary. Do not
include the name of the binary itself.
If your database dump takes a long time, you might exceed the default timeout of 60 seconds. You can set a higher (or
lower) limit by providing a dump.timeout config key which specifies, in seconds, how long the command may run.
Here's an example for MySQL:
// config/database.php
'connections' => [
'mysql' => [
'driver' => 'mysql'
...,
'dump' => [
'dump_binary_path' => '/path/to/the/binary', // only the path, so without `mysqldump` or `pg_dump`
'use_single_transaction',
'timeout' => 60 * 5, // 5 minute timeout
'exclude_tables' => ['table1', 'table2'],
'add_extra_option' => '--optionname=optionvalue',
]
],
There is also a setting in backend area to exclude database tables from backup. By default, it will exclude logs tables.
Configuring the backup disk
By default, the backup will be saved into the storage/app/October CMS/ directory of your October application. This folder most probably is configured to be public. We recommend that you create a disk named backups (you can use any name you prefer) in filesystems.php and select this disk in plugin Settings.
Filesystems
Plugin supports following storage drivers:
- Local Storage
- S3 Cloud Storage
- FTP Storage
- SFTP Storage
- Dropbox Cloud Storage
More drivers can be added on feature requests. Just create an issue with [Feature Request] in title, and I will see what can be done.
The filesystem configuration file is located at config/filesystems.php. Within this file you may configure all of your "disks". Example configurations for each supported driver is included in the configuration file. So, simply modify the configuration to reflect your storage preferences and credentials!
S3 Driver Configuration
Before using the S3 driver, you will need to install the Flysystem S3 package via the Composer package manager:
composer require league/flysystem-aws-s3-v3 "^3.0"
The S3 driver configuration information is located in your config/filesystems.php configuration file.
After filesystem configuration go to plugin Settings and check s3 disk in Destination tab.
FTP Driver Configuration
Before using the FTP driver, you will need to install the Flysystem FTP package via the Composer package manager:
composer require league/flysystem-ftp "^3.0"
Laravel's Flysystem integrations work great with FTP; however, a sample configuration is not included with the framework's default filesystems.php configuration file. If you need to configure an FTP filesystem, you may use the configuration example below:
'ftp' => [
'driver' => 'ftp',
'host' => env('FTP_HOST'),
'username' => env('FTP_USERNAME'),
'password' => env('FTP_PASSWORD'),
// Optional FTP Settings...
// 'port' => env('FTP_PORT', 21),
// 'root' => env('FTP_ROOT'),
// 'passive' => true,
// 'ssl' => true,
// 'timeout' => 30,
],
After filesystem configuration go to plugin Settings and check ftp disk in Destination tab.
SFTP Driver Configuration
Before using the SFTP driver, you will need to install the Flysystem SFTP package via the Composer package manager:
composer require league/flysystem-sftp-v3 "^3.0"
Laravel's Flysystem integrations work great with SFTP; however, a sample configuration is not included with the framework's default filesystems.php configuration file. If you need to configure an SFTP filesystem, you may use the configuration example below:
'sftp' => [
'driver' => 'sftp',
'host' => env('SFTP_HOST'),
// Settings for basic authentication...
'username' => env('SFTP_USERNAME'),
'password' => env('SFTP_PASSWORD'),
// Settings for SSH key based authentication with encryption password...
'privateKey' => env('SFTP_PRIVATE_KEY'),
'password' => env('SFTP_PASSWORD'),
// Optional SFTP Settings...
// 'hostFingerprint' => env('SFTP_HOST_FINGERPRINT'),
// 'maxTries' => 4,
// 'passphrase' => env('SFTP_PASSPHRASE'),
// 'port' => env('SFTP_PORT', 22),
// 'root' => env('SFTP_ROOT', ''),
// 'timeout' => 30,
// 'useAgent' => true,
],
After filesystem configuration go to plugin Settings and check sftp disk in Destination tab.
Dropbox configuration
Install Dropbox Adapter plugin.
Read this external plugin documentation and configure Dropbox filesystem.
After filesystem configuration go to plugin Settings and check dropbox disk in Destination tab.
Console commands
Plugin will create five new artisan commands for working with a console.
backup:run command will run new backup process. Add --only-db option for backup only database.
backup:clean command will run clean old backups process.
backup:list command will display status of all monitored destination filesystems.
backup:monitor command will check status of all monitored destination filesystems.
backup:restore command will restore the database from a backup archive. See Restoring a backup.
Notification channels
Notifications can be delivered by e-mail, to Discord, or to any service that accepts a webhook. Each channel is used only once it has an address configured, so leaving a field empty simply disables that channel. When several are configured, every enabled notification is sent through all of them.
| Setting | Description |
|---|---|
| Notification email | E-mail address that will receive notifications. Separate multiple addresses with a comma. Every address is validated when you save, because a malformed one would stop backups from running. |
| Discord webhook URL | Create it in your Discord server under Integrations. |
| Webhook URL | Notifications are posted as JSON. Works with Slack, Mattermost, Microsoft Teams and custom integrations. |
Slack accepts incoming webhooks, so use the Webhook URL field to post backup notifications to a Slack channel.
A notification is sent when:
- backup was successful,
- backup has failed,
- cleanup was successful,
- cleanup has failed,
- healthy backup was found,
- unhealthy backup was found.
To configure this feature go to plugin Settings and Notifications tab.
-
schote
Found the plugin useful on 16 May, 2026
Except the cron jobs it works and does its job.
-
Renatio author
Replied on 11 Aug, 2026
Thank you for the review! Scheduled backups rely on the October CMS scheduler, which needs a single system cron entry on the server — see Setting Up the Scheduler. Once that entry is in place, the schedules configured on the Scheduler tab run on their own.
Since v7.1.0 there is also an alternative for hosting where a system cron is not available at all: the Allow external trigger switch publishes secret URLs that run a backup or cleanup over HTTP, so any external cron service (cron-job.org, an uptime monitor, etc.) can trigger backups on a schedule.
If the cron jobs still give you trouble, please open an issue on the plugin support page and I will help you get them running.
-
Myjestic
Found the plugin useful on 16 May, 2021
Really nice Plugin, after I got rid of some problems. Maybe this could help the developer or other users to make it work if this problems occur.
1) execution timeout / memory limit Edit "plugins\renatio\backupmanager\vendor\spatie\laravel-backup\src\Commands\BackupCommand.php" and add the following lines and adjust the values to your needs:
ini_set("memory_limit",4000); set_time_limit(300); ini_set('default_socket_timeout', 6000);2) 504 Gateway Timeout I figured out, that this error occure if you enable the password encryption. Password encryption will be executed by "laravel-backup-shild". Replace the folder "src" in "plugins\renatio\backupmanager\vendor\olssonm\laravel-backup-shield\" with the newest version on "https://github.com/olssonm/laravel-backup-shield".
-
Renatio author
Replied on 11 Aug, 2026
Thank you for the detailed write-up! This review refers to a 2021 version of the plugin — both problems have since been solved properly, so please don't edit files under
vendor/(any plugin update silently reverts such changes).1) Execution timeout / memory limit — the current version can run backups through the queue (the Queue backups switch on the Destination tab, since v6.4.0), which takes the web request and its time limits out of the picture entirely. The Maximum execution time error section of the documentation covers the remaining options.
2) 504 on password encryption — the
laravel-backup-shieldpackage is gone. Encryption is now built in and applied while the archive is created instead of re-compressing it afterwards, so enabling a password no longer causes gateway timeouts.If anything still misbehaves on a current version, please open an issue on the plugin support page and I will look into it.
-
PrestaSafe
Found the plugin useful on 7 Aug, 2019
Great plugin thanks ! Do you plan an restore backup options ?
-
Renatio author
Replied on 11 Aug, 2026
Thank you! Six years later the answer is finally yes: since v6.5.0 the plugin ships a
backup:restoreconsole command that restores the database from any backup archive, and the backups list has a button that copies the matching command to your clipboard. See the Restoring a backup section of the documentation for the details and safety notes. -
Web Master
Found the plugin not useful on 15 May, 2019
Doesn't Work anymore
-
Renatio author
Replied on 17 May, 2019
Thank you for very useful review!
Just checked and works fine with latest build.
Reviews should not be used to get support or report issues. For the future please use support link on plugin page.
-
Javier Offshore
Found the plugin useful on 16 Jan, 2019
Hello good afternoon I bought the 2FA plugin I have the following problem: How can I force other users to activate 2FA every time they enter the backend?
Awaiting your reply
-
Renatio author
Replied on 11 Aug, 2026
This review seems to have landed on the wrong plugin — Backup Manager makes backups and has nothing to do with 2FA, and the 2FA plugin mentioned here was not one of mine.
That said, if anyone finds this looking for the same thing today: my Two-Factor Authentication plugin has an Enforcement setting with Require 2FA for all users, which forces every backend user to set up 2FA on their next login — exactly what was asked about here.
For backup-related questions, please use the plugin support page.
-
Trias Nur Rahman
Found the plugin useful on 14 Sep, 2018
Very great plugin! It would be better if there is a notification (email) when something wrong in backup process :) Thanks!
-
Renatio author
Replied on 19 Jun, 2020
This is now available in the newest version!
-
Reanatus
Found the plugin not useful on 25 May, 2018
BUG
"Type error: Argument 1 passed to Spatie\Backup\Tasks\Backup\BackupJobFactory::createDbDumpers() must be of the type array, null given, called in /var/www/html/plugins/renatio/backupmanager/vendor/spatie/laravel-backup/src/Tasks/Backup/BackupJobFactory.php on line 14" on line 25 of /var/www/html/plugins/renatio/backupmanager/vendor/spatie/laravel-backup/src/Tasks/Backup/BackupJobFactory.php
-
Renatio author
Replied on 27 May, 2018
Reviews should not be used to get support or report issues. For the future please use support link on plugin page.
https://github.com/mplodowski/backupmanager-plugin-public/issues/6
-
Andy Barker
Found the plugin useful on 30 Dec, 2017
This is a great plugin which does exactly what you require from a backup plugin. Everything worked first time without a problem. Well worth the price.
Thank you to Renatio / Michel who has been super responsive to a special request I had.
-
sunil chaulagain
Found the plugin useful on 1 Nov, 2017
Hi , I just installed the plugin but its not working . It makes backup with db but not files. My include files repeater doesn't have anything. I am not sure what's going on. Thanks
-
Renatio author
Replied on 1 Nov, 2017
Hi,
reviews should not be used to get support or report issues. For the future please use support link on plugin page.
Please contact me at michal.plodowski@gmail.com or report an issue on gitHub.
Regards,
Michal
-
Dan Miles
Found the plugin useful on 17 May, 2017
Brilliantly easy, super reliable and generally couldn't do without it.
-
Brian N
Found the plugin useful on 30 Dec, 2016
This is a very good must have plugin. I agree with the other reviews though about wanting a way to upload a backup that is not in the database.
-
Renatio author
Replied on 11 Aug, 2026
Thank you! This one is long since solved: the backups list is no longer kept in the database — it simply shows every backup archive found on the configured disks. Upload an archive to any of them (local, S3, SFTP, Dropbox, ...) and it appears in the list like any other backup. Since v6.5.0 you can also restore the database from any such archive with the
backup:restoreconsole command — see the Restoring a backup section of the documentation. -
Toby Catlin
Found the plugin useful on 26 Jul, 2016
Its a good plugin but in my opinion has a fatal flaw (unless i am missing something).
The backup archives are listed in the database which means you cannot upload a backup that you have previously downloaded and stored elsewhere. So it works fine if you want to roll back to a previous state but if you wanted to reinstate the application from scratch you have to insert db rows to get the backups to display. It would not be hard to implement a backup import/upload feature.
-
Potting Shed
Found the plugin useful on 16 Dec, 2015
Mindblowing plugin and excellent support from Renatio. This is simply a must for any serious OctoberCMS developer.
-
zack
Found the plugin useful on 20 Aug, 2015
Can't remember how many times backup feature saved my life and that plugin allow me manage all backups in backend. Also Michal (developer) giving fast good feedbacks! Thank you
-
Joel Hernandez
Found the plugin useful on 2 Jul, 2015
Is a mistake for developers around the world, not to consider the backups of your application and database. Nowadays, the chances to lose information is huge. This plugin is amazing. Remember to install mysql package in your webserver, if you have 2 different servers: (one for webserver and one for database server)...
-
Alex Bass
Found the plugin useful on 8 Jun, 2015
This is EXACTLY what I was looking for. I am currently using DigitalOcean with Laravel Forge and this works perfectly. Must have app on every October site. Just purchased it for a couple projects. Have been hoping that DigitalOcean offered easy database and application backups but they have been really slow to implement that functionality so this app is PERFECT.
Can't thank you enough. Very happy with this and keep up the killer work. I'll be supporting this plugin with every project and highly recommending it to others.
Cheers!
-
| 7.2.1 |
Send notifications from the sender configured in the backend mail settings instead of the one from the environment file. Aug 12, 2026 |
|---|---|
| 7.2.0 |
Serialize every backup run under one shared lock so runs from the backend, the scheduler, the queue and the external trigger no longer overlap. Aug 11, 2026 |
| 7.1.0 |
Run backups from an external cron service through a secret URL, for hosting without a system cron or console access. Aug 11, 2026 |
| 7.0.0 |
Replace the two coarse permissions with granular ones and enforce them in every handler. Review your administrator roles after updating. Aug 11, 2026 |
| 6.7.1 |
Delete selected history entries, or a single one, instead of only clearing everything. Report what actually happened when deleting a backup. Aug 11, 2026 |
| 6.7.0 |
Rebuild the history page with date, type, status and disk filters. Prune history entries after a configurable retention period. Paginate the backups list. Improve the restore hints. Fix backup verification failing on broken symlinks. Aug 11, 2026 |
| 6.6.4 |
Report a truncated or partially damaged compressed dump as corrupt. Require a full name match when picking a dump out of an archive. Aug 11, 2026 |
| 6.6.3 |
Stop a failed SQLite restore halfway. Name the safety backup disk in the rollback hint. Decompress dumps without holding them in memory. Refresh the settings in queued backups. Aug 11, 2026 |
| 6.6.2 |
Restrict the backups list to configured disks. Fix dump matching for PostgreSQL and for several dumps of one client. Stop encrypting the archive twice. Aug 11, 2026 |
| 6.6.1 |
Escape backup names in the backend. Validate the notification email. Fix a blank custom cron breaking the scheduler. Store the matching log with each history entry. Aug 11, 2026 |
| 6.6.0 |
Record a history of backup runs and speed up the backups list. Aug 11, 2026 |
| 6.5.0 |
Add the backup:restore console command. Copy the restore command from the backups list. Keep the plugin working when the database is unreachable. Aug 11, 2026 |
| 6.4.0 |
Run backups through the queue when enabled in the settings. Aug 11, 2026 |
| 6.3.0 |
Send backup notifications to Discord and to a generic webhook. Aug 11, 2026 |
| 6.2.0 |
Cover the backend handlers with tests. Fix an error when switching disks without a selection. Aug 11, 2026 |
| 6.1.0 |
Support Laravel 13 and spatie/laravel-backup 10. Fix backup list error when no disk is configured. Aug 11, 2026 |
| 6.0.4 |
Add tests. Aug 11, 2026 |
| 6.0.3 |
Fix password protection error. Oct 20, 2025 |
| 6.0.2 |
Update dependencies. Jul 12, 2025 |
| 6.0.1 |
Require October 4. Jul 12, 2025 |
| 5.1.9 |
Fix backup encryption with password. Sep 25, 2023 |
| 5.1.8 |
Improve code quality. Nov 18, 2022 |
| 5.1.7 |
Bump dependencies. Nov 02, 2022 |
| 5.1.6 |
Reorganize settings. Oct 13, 2022 |
| 5.1.5 |
Minor fix. Jun 20, 2022 |
| 5.1.4 |
Minor fix. Jun 20, 2022 |
| 5.1.3 |
Improve support for Turbo Router. Jun 16, 2022 |
| 5.1.2 |
Improve UI. Custom cron expression for scheduler. Jun 16, 2022 |
| 5.1.1 |
Minor fix. Jun 14, 2022 |
| 5.1.0 |
Fix mail notifications. Jun 14, 2022 |
| 5.0.3 |
Docs. Jun 09, 2022 |
| 5.0.2 |
Minor fix. Jun 07, 2022 |
| 5.0.0 |
Require October CMS 3.0. Jun 07, 2022 |
| 4.3.0 |
Require October CMS 2.1. Dec 08, 2021 |
| 4.2.3 |
Polish language. Dec 01, 2021 |
| 4.2.2 |
Update docs. Sep 26, 2021 |
| 4.2.1 |
Set configuration defaults. Sep 14, 2021 |
| 4.2.0 |
Support OctoberCMS 2.0. Sep 11, 2021 |
| 4.1.0 |
Rewrite plugin core. Sep 11, 2021 |
| 4.0.1 |
Add option to ignore unreadable directories. Sep 11, 2021 |
| 4.0.0 |
!!! Add support for Laravel 6. Only update for Laravel 6 and October >= 1.1! Sep 11, 2021 |
| 3.3.4 |
Elevate plugin permission. Sep 16, 2020 |
| 3.3.3 |
Fix memory limit check. Jul 03, 2020 |
| 3.3.2 |
Fix listing database tables in settings. Jun 26, 2020 |
| 3.3.1 |
Improve mail notifications. Jun 19, 2020 |
| 3.3.0 |
Mail notifications for backup events. Jun 19, 2020 |
| 3.2.6 |
Fix Symfony dependency error. Jun 18, 2020 |
| 3.2.5 |
Add FTP configuration example to README. Jun 18, 2020 |
| 3.2.4 |
Add settings to exclude database tables from backup. Jun 18, 2020 |
| 3.2.3 |
Add action buttons to list. Jun 18, 2020 |
| 3.2.2 |
Add 'proc_open' check as system requirement. Jun 18, 2020 |
| 3.2.1 |
Simplify backups cleanup. Jun 18, 2020 |
| 3.2.0 |
Fix Gzip database compression. Jun 18, 2020 |
| 3.1.0 |
Update dependencies. Jun 18, 2020 |
| 3.0.2 |
Minor fix. Jul 21, 2018 |
| 3.0.1 |
Add password protection for backups. Jul 15, 2018 |
| 3.0.0 |
!!! Update all dependencies. Require PHP >= 7.1. Jul 15, 2018 |
| 2.1.4 |
Remove database port check. Jul 15, 2018 |
| 2.1.3 |
Fix wrong script name. Jul 15, 2018 |
| 2.1.2 |
Default to database from config. Jul 15, 2018 |
| 2.1.1 |
Fix minor issue with cleanup of old backups. Dec 20, 2017 |
| 2.1.0 |
!!! Move Dropbox filesystem adapter to external plugin. Oct 12, 2017 |
| 2.0.0 |
!!! Rewrite plugin core and add support for Laravel 5.5. Oct 12, 2017 |
| 1.0.10 |
Allow to add extra parameters to MySQL dump command. Better database error handling. Mar 12, 2017 |
| 1.0.9 |
Check for driver name, not connection name. Mar 12, 2017 |
| 1.0.8 |
Fix issue with not deleted temp files after backup finished. Jun 18, 2016 |
| 1.0.7 |
Fix bug with empty port in database config. Mar 09, 2016 |
| 1.0.6 |
Add system requirements check and fix bug with download backup response. Aug 23, 2015 |
| 1.0.5 |
Dropbox Adapter Support Jul 20, 2015 |
| 1.0.4 |
Fix bug for PHP 5 < 5.6 Jul 05, 2015 |
| 1.0.3 |
Minor changes. Jun 15, 2015 |
| 1.0.2 |
Added PostgreSQL support. Jun 05, 2015 |
| 1.0.1 |
First version of Backup Manager plugin. May 26, 2015 |
Upgrading To 2.0.0
Plugin requires October CMS build 420+ with Laravel 5.5 and PHP >=7.0.
Plugin settings was reset to defaults, so please review and update them for your project needs.
Upgrading To 2.1.0
Dropbox's integration was moved to external Dropbox Adapter plugin. Read this plugin documentation how to configure Dropbox filesystem.
Upgrading To 2.1.4
Plugin requires setting database port in a config. This only affects older installations of October CMS.
Upgrading To 3.0.0
Main dependency spatie/laravel-backup was updated to 5.6.4 version.
Upgrading To 4.0.0
Plugin requires October CMS build 467+ with Laravel 6.x and PHP >=7.2.
Upgrading To 4.1.0
Plugin requires October CMS 1.x with Laravel 6.x and PHP >=7.3.
Upgrading To 4.2.0
Plugin requires October CMS version 2.x with Laravel 6.x and PHP >=7.3.
Drop support for October CMS version 1.x.
Upgrading To 5.0.0
Plugin requires October CMS version 3.0 or higher, Laravel 9.0 or higher and PHP >=8.0.
Drop support for October CMS version 2.x.
Upgrading To 5.1.0
Mail notification settings has changed. Please go to Settings -> Backup Manager -> Notifications tab and configure them again if you use them.
Upgrading To 6.1.0
Plugin requires PHP 8.3 or higher and supports Laravel 12 and 13. The main dependency spatie/laravel-backup was
updated to 10.x, so run composer update after updating. Existing backups remain readable.
Upgrading To 6.2.0
No action is needed.
Upgrading To 6.3.0
Backup notifications can now also be sent to Discord and to a generic webhook (works for Slack too); configure them on the Notifications tab.
Upgrading To 6.4.0
A new Queue backups setting on the Destination tab runs backend backups through the queue. It is off by default; only enable it with a running queue worker, otherwise backups started from the backend will never run.
Upgrading To 6.5.0
A new console-only backup:restore command restores the database from a backup archive; the terminal button in the
backups list copies the matching command. It needs the mysql, psql or sqlite3 client in PATH. See the
"Restoring a backup" section of the documentation before using it.
Upgrading To 6.6.0
This release adds the plugin's first database table (the new History page), so run php artisan october:migrate
after updating.
Upgrading To 6.6.1
No action is needed. Note that a malformed notification e-mail address is now refused when saving the settings.
Upgrading To 6.6.2
No action is needed.
Upgrading To 6.6.3
No action is needed.
Upgrading To 6.6.4
No action is needed.
Upgrading To 6.7.0
This release adds new settings and prunes the history table, so run php artisan october:migrate after updating.
History retention is configured on the Cleanup tab; the Backup log popup was replaced by the History page.
Upgrading To 6.7.1
No action is needed.
Upgrading To 7.0.0
This release replaces the plugin permissions. Every administrator role loses its access to Backup Manager until you grant the new permissions by hand. Nothing is migrated automatically, so plan for a moment of downtime on the backups page and set the roles up right after updating.
Go to Settings → Role Permissions, open each role that should reach the plugin, and tick what it needs on the Backups tab. Granting Manage backups alone shows the page with nothing but the refresh button; each action is a separate tick. To restore exactly what a role could do before, tick everything in the group.
Administrators marked as super users are unaffected - they bypass permissions entirely, so the backups page keeps working for them throughout.
Two things are no longer bundled with the backups page. History is now gated on its own permission, so an administrator can be given the backups page without the history, or the other way round. Settings is checked in the toolbar as well, so the button is hidden from anybody who cannot open the settings.
Permissions are enforced in every handler, not only hidden in the interface. A request sent by hand to an action the administrator lacks the permission for is refused rather than carried out.
Upgrading To 7.1.0
No action is needed. A new Allow external trigger switch on the Scheduler tab publishes addresses that run a backup or a cleanup over HTTP; it stays off until you turn it on. The address is the only credential - treat it as a password and read the Scheduler section of the documentation before enabling it.
Upgrading To 7.2.0
No migration is needed. Backup runs are now serialized under a shared lock, so runs started from the backend, the scheduler, the queue and the external trigger no longer overlap.
The external trigger token is now stored encrypted and only comes into existence when the settings are saved. Installations upgraded from 7.1.0 have no token yet - open the plugin settings and save them once, then point your external cron service at the shown addresses. A new button under the addresses generates a fresh token if the old one leaked.




