Database only backups in WHM

 Some clients asked us if you can set up only database backups in WHM. For some, this will sound strange, but there are users who want such a feature. 

You can access WHM backup settings via WHM->Backup->Backup Configuration. Unfortunately, there is no option at this moment to backup only users’ databases.

whm database backup
WHM Backup Configuration

Update: As of April 20, 2020, this cPanel request is in “Open Discussion” status. You can comment and vote at cPanel Feature Requests Site

What solutions do you have? You can use bash commands. One command to backup all the databases on the server to a .gz archive is:

root@www [/backup]# mysqldump --all-databases | gzip > /backup/$(date +%Y-%h-%d)-alldatabases.sql.gz

This will create a backup with all MySQL/MariaDB databases on the server. The filename will include the current date. (e.g. 2018-Sep-25-alldatabases.sql.gz) You can modify the command per your needs. You can also create a cron job to run it at specific times.

Another possibility is to backup each database on the server individually. For this create a new file like backupdbs.sh  The content of the file is:

#!/bin/bash

mysql=/usr/bin/mysql
mysqldump=/usr/bin/mysqldump
date=$(date +%Y-%h-%d)

backupdir="/backup"
mkdir -p $backupdir/$date

databases=`$mysql -e "SHOW DATABASES;" | grep -Ev "(Database|information_schema)"`
for db in $databases; do
echo $db
$mysqldump --opt --databases $db | gzip > "$backupdir/$date/$db.sql.gz"
done

To run the script:

root@www [/backup]# perl backupdbs.sh

As in the previous case, you can also adjust the script per your needs and create a cron job.

Leave a Reply