How to Backup Db / Rollback, Media, Code in Magento 2
One of the most important things when running an online store is having a proper backup of everything so that if something goes wrong, you can take back or restore it. So it’s important to back up at least the most important data in your store. Once you have made a backup of your files, you can restore or roll back it. It’s quite easy to make mistakes in this process because the system will delete specific files and databases before restoring them.
That’s why in this tutorial, we will talk about How to Backup / Rollback Db, Media, Code in Command Line Series. As you know, from Magento 2, they add many commands in bin/magento
. This may difficult to get approach this, let me explain more detail about How to Backup / Rollback Db, Media, Code.
Let’s start!
Table of contents
- How to Backup / Rollback Db, Media, Code command line
- List all existed backup files
- Backup Database
- Backup Media
- Backup Code
- How to rollback Database, Media, Code
- List all existed backup files
- Note
How to Backup / Rollback Db, Media, Code command line
Go to Magento admin root folder and show usages:
php bin/magento setup:backup --help
Usage:
setup:backup [options]
Options:
--code Take code and configuration files backup (excluding temporary files)
--media Take media backup
--db Take complete database backup
--magento-init-params=MAGENTO-INIT-PARAMS Add to any command to customize Magento initialization parameters
For example: "MAGE_MODE=developer&MAGE_DIRS[base][path]=/var/www/example.c
m&MAGE_DIRS[cache][path]=/var/tmp/cache"
-h, --help Display this help message
-q, --quiet Do not output any message
-V, --version Display this application version
--ansi Force ANSI output
--no-ansi Disable ANSI output
-n, --no-interaction Do not ask any interactive question
-v|vv|vvv, --verbose Increase the verbosity of messages: 1 for normal output, 2 for more verbos output and 3 for debug
Help:
Takes backup of Magento Application code base, media and database
List all existed backup files
php bin/magento info:backups:list
Output :
Showing backup files in /var/www/html/sam/ce2252/var/backups.
+---------------------------------+-------------+
| Backup Filename | Backup Type |
+---------------------------------+-------------+
| 1534245793_db.sql | db |
| 1534245893_filesystem_media.tgz | media |
+---------------------------------+-------------+
There are 2 backup files: database and media.
Backup Database
This command line will backup current database and save to a static file. You can store on server, upload to cloud or download to local machines.
php bin/magento setup:backup --db
Output:
Enabling maintenance mode
DB backup is starting...
DB backup filename: 1534245793_db.sql
DB backup path: ./var/backups/1534245793_db.sql
[SUCCESS]: DB backup completed successfully.
Disabling maintenance mode
Let me exaplain more details. At the begining of the process, it will maintenance mode, and start backup then store to ./var/backups/
folder. After that, it will disable maintenance mode again.
You can setup run backup database daily with cron job. See this example:
crontab -e
It will show your server’s current cron jobs table. Let’s add a cron job line:
0 0 * * * php /path/to/magento/bin/magento setup:backup --db
Change /path/to/magento/
to your server path.
This schedule task will be ran at 00:00 everyday.
Backup Media
It is same with backup database
php bin/magento setup:backup --media
Output:
Enabling maintenance mode
Media backup is starting...
Media backup filename: 1534245893_filesystem_media.tgz (The archive can be uncompressed with 7-Zip on Windows systems)
Media backup path: ./var/backups/1534245893_filesystem_media.tgz
[SUCCESS]: Media backup completed successfully.
Disabling maintenance mode
Backup Code
It is same with backup database, media
php bin/magento setup:backup --code
Output:
Enabling maintenance mode
Code backup is starting...
Code backup filename: 1534246155_filesystem_code.tgz (The archive can be uncompressed with 7-Zip on Windows systems)
Code backup path: ./var/backups/1534246155_filesystem_code.tgz
[SUCCESS]: Code backup completed successfully.
Disabling maintenance mode
How to rollback Database, Media, Code
Go to Magento admin root folder and show usages:
php bin/magento setup:rollback --help
Usage:
setup:rollback [options]
Options:
-c, --code-file=CODE-FILE Basename of the code backup file in var/backups
-m, --media-file=MEDIA-FILE Basename of the media backup file in var/backups
-d, --db-file=DB-FILE Basename of the db backup file in var/backups
--magento-init-params=MAGENTO-INIT-PARAMS Add to any command to customize Magento initialization parameters
For example: "MAGE_MODE=developer&MAGE_DIRS[base][path]=/var/www/example.com&MAGE_DIRS[cache][path]=/var/tmp/cache"
-h, --help Display this help message
-q, --quiet Do not output any message
-V, --version Display this application version
--ansi Force ANSI output
--no-ansi Disable ANSI output
-n, --no-interaction Do not ask any interactive question
-v|vv|vvv, --verbose Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
Help:
Rolls back Magento Application codebase, media and database
In this example, I will show you how to restore / rollback Magento database. Before you rollback, let check exist backup files:
List all existed backup files
php bin/magento info:backups:list
Output :
Showing backup files in ./var/backups.
+---------------------------------+-------------+
| Backup Filename | Backup Type |
+---------------------------------+-------------+
| 1534245793_db.sql | db |
| 1534245893_filesystem_media.tgz | media |
+---------------------------------+-------------+
Let run rollback a database
php bin/magento setup:rollback --db-file=1534245793_db.sql
It asks to confirm, type: y
to proces the rollback process.
Output:
Enabling maintenance mode
You are about to remove current code and/or database tables. Are you sure?[y/N]y
DB rollback is starting...
DB rollback filename: 1534245793_db.sql
DB rollback path: /var/www/html/sam/ce2252/var/backups/1534245793_db.sql
[SUCCESS]: DB rollback completed successfully.
Please set file permission of bin/magento to executable
Disabling maintenance mode
Note
All backup files have to placed in ./var/backups/
folder.
Conclusion
We hope that with this straightforward and easy-to-follow process, you will be able to back up your store easil. Remember to keep an up-to-date backup of your store to avoid bad issues from happening. If you have any problems while following this tutorial, feel free to let us know.
Thanks for reading!
Enjoyed the tutorial? Spread it to your friends!
Sam Thomas
CEO and Founder of Mageplaza. Pursueing a simple and healthy lifestyle. A friend, a husband and a dad of two children, a trainer and an influencer wannabe. He is a big fan of sports and travel, also.