Joomla Backups — Akeeba Backup, Manual Backup and Restore Guide
In this tutorial, you'll learn how to back up and restore Joomla sites — using Akeeba Backup for automated full backups, manual database and file backups via command line, and the Kickstart restore script for disaster recovery.
What You'll Learn
- Installing and configuring Akeeba Backup for automated backups
- Creating backup profiles for full site, database-only, and files-only backups
- Configuring backup destinations (server directory, SFTP, Dropbox, Amazon S3)
- Scheduling backups via cron or the task scheduler
- Performing manual database backups with phpMyAdmin or mysqldump
- Performing manual file backups with tar and rsync
- Restoring a site using the Kickstart extraction wizard
- Restoring to a new server with a different domain
Why It Matters
Every Joomla site will eventually need a backup — whether for server failure, accidental content deletion, extension conflict, or security breach. Without a backup, recovery means rebuilding the site from scratch. Joomla sites consist of files (PHP, images, templates, extensions) and a database (articles, users, configuration). Both must be backed up together. A single backup is not enough — you need a regular schedule and off-site storage. Automating backups with Akeeba Backup is the safest approach, but knowing how to do it manually gives you options when automation is not available.
Real-World Use
A Joomla site administrator runs an e-commerce store with 2,000 products and daily orders. One morning, the site shows a white screen. The hosting company reports a corrupted database from a failed server Migration. Without a backup from yesterday, the administrator would lose 24 hours of orders and customer data. Because Akeeba Backup runs nightly and stores backups to both the server and Dropbox, the administrator restores the latest backup using Kickstart. The site is back online within 30 minutes. Only the orders from the current day are lost, which the team re-enters from email receipts.
Learning Path
flowchart LR A["Joomla 4 vs 5"] --> B["Backups"] B --> C["User Groups"] C --> D["Custom Fields"] D --> E["Joomla API"] classDef current fill:#38bdf8,color:#0f172a,stroke-width:2px class B current
Akeeba Backup
Akeeba Backup is the most popular backup extension for Joomla, installed on millions of sites. It creates complete .jpa backup archives that include both files and database.
Installing Akeeba Backup
- Download Akeeba Backup from the Joomla Extensions Directory
- Go to Extensions > Manage > Install
- Upload the package
- Go to Components > Akeeba Backup
First Backup
- In Akeeba Backup, click Backup Now
- Select a Backup Profile (default is "Site Root" — full site)
- Click Backup Now
Akeeba creates a .jpa file containing all your site files and a database dump. The backup appears in the Manage Backups section.
Backup Profile Types
Akeeba Backup offers several profile types:
| Profile | What It Backs Up | Use Case |
|---|---|---|
| Site Root | Full site (files + database) | Regular scheduled backups |
| Database Only | Database only | When files rarely change |
| Files Only | Files only | When database is backed up separately |
| Frontend Backup | Triggered from a URL | Backup via cron job |
Creating a Custom Profile
- Go to Components > Akeeba Backup > Profiles
- Click New to create a profile
- Configure:
Database Settings tab:
| Setting | Value |
|---|---|
| Backup Database | Yes |
| Database Dump Method | mysqldump (recommended) or PHP |
Files Settings tab:
| Setting | Value |
|---|---|
| Include Site Root | Yes |
| Include Temp Directory | No |
| Include Logs | No |
| Include Cache | No |
Configuring Backup Destination
Akeeba can store backups to multiple locations:
Server Directory
The default destination stores backups in /administrator/components/com_akeeba/backup/.
SFTP/FTP
For off-site storage:
- Go to Components > Akeeba Backup > Configuration
- Click Add New Destination
- Select SFTP
- Enter:
Server: backup.example.com
Port: 22
Username: backupuser
Password: ********
Directory: /backups/mysite/
Cloud Storage
Akeeba supports:
| Destination | Setup |
|---|---|
| Dropbox | Authorize Akeeba via OAuth |
| Amazon S3 | Enter AWS access key and bucket name |
| Rackspace | Enter API credentials |
| Google Drive | Authorize via OAuth |
Scheduling Backups
Via Joomla Task Scheduler (Joomla 4+)
- Go to System > Scheduled Tasks
- Click New
- Select Akeeba Backup as the task type
- Set frequency (e.g., daily at 2:00 AM)
- Enable the task
Via Cron Job
For servers with cron access, use the CLI script:
# Run Akeeba backup from command line
php /path/to/joomla/cli/akeeba-backup.php --profile=1
# Add to crontab (daily at 3 AM)
0 3 * * * /usr/bin/php /path/to/joomla/cli/akeeba-backup.php --profile=1 >> /dev/null 2>&1
Via Frontend URL
If you cannot use CLI, Akeeba provides a frontend backup URL:
https://yoursite.com/index.php?option=com_akeeba&view=backup&key=YOUR_SECRET_KEY
Security: Protect the frontend backup URL with a secret key. Anyone who knows the URL can trigger a backup.
Backup File Format (.jpa)
Akeeba's .jpa format is a proprietary archive format. It contains:
- All site files (compressed)
- Database dump (SQL)
- Backup metadata
- Optional encryption
Encryption
For sensitive sites, enable encryption:
- In Akeeba Backup > Configuration
- Set Enable Encryption to Yes
- Set a strong passphrase
Without the passphrase, the backup cannot be restored.
Excluding Files
You should exclude unnecessary files from backups to save space:
# Default exclusions in Akeeba Backup
tmp/
cache/
logs/
administrator/components/com_akeeba/backup/
Add custom exclusions in the profile's Files Settings tab, under Off-Site Directories.
Manual Database Backup
When Akeeba is not available, you can back up the database manually.
Using mysqldump
# Simple backup
mysqldump -u root -p joomla_db > joomla_db_backup.sql
# With options (recommended)
mysqldump -u root -p \
--add-drop-table \
--complete-insert \
--default-character-set=utf8 \
--routines \
--triggers \
joomla_db > joomla_db_backup.sql
# Compressed backup
mysqldump -u root -p joomla_db | gzip > joomla_db_backup.sql.gz
Using phpMyAdmin
- Log into phpMyAdmin
- Select your Joomla database
- Click Export
- Choose Custom export method
- Select all tables
- Check Add DROP TABLE / VIEW / PROCEDURE / FUNCTION
- Check Enclose table and field names with backquotes
- Select gzipped compression
- Click Go
Manual File Backup
# Full site backup with tar
tar -czf joomla_files_backup.tar.gz /path/to/joomla/
# Exclude cache and tmp directories
tar -czf joomla_files_backup.tar.gz \
--exclude='cache' \
--exclude='tmp' \
--exclude='logs' \
/path/to/joomla/
# Sync to remote server with rsync
rsync -avz --delete /path/to/joomla/ user@backup.example.com:/backups/joomla/
Restoring with Kickstart
Kickstart is Akeeba's extraction script. It restores a .jpa backup to any server.
Steps to Restore
- Upload the
kickstart.phpfile to the target directory - Upload the
.jpabackup file to the same directory - Open
https://yoursite/kickstart.phpin your browser - Click Start
- Select the
.jpafile - Enter the password (if encrypted)
- Click Extract
Database Restoration
After extraction, Kickstart shows the database restoration screen:
| Setting | Value |
|---|---|
| Database Host | localhost (or your MySQL host) |
| Database User | Your MySQL username |
| Database Password | Your MySQL password |
| Database Name | Your new database name |
Kickstart will:
- Drop existing tables (with confirmation)
- Create tables from backup
- Update configuration.php with new database credentials
Updating configuration.php
After restoration, Kickstart updates configuration.php:
public $host = 'localhost';
public $user = 'new_db_user';
public $password = 'new_db_password';
public $db = 'new_database_name';
public $dbprefix = 'jos_';
Restoring to a New Server
Changing the Domain
If you are moving to a new domain:
- Restore the backup using Kickstart
- After restoration, edit
configuration.php:
public $live_site = 'https://newdomain.com';
- Update any hardcoded URLs in the database:
UPDATE jos_content SET introtext = REPLACE(introtext, 'olddomain.com', 'newdomain.com');
UPDATE jos_content SET fulltext = REPLACE(fulltext, 'olddomain.com', 'newdomain.com');
UPDATE jos_categories SET description = REPLACE(description, 'olddomain.com', 'newdomain.com');
Clear Cache After Restore
# Delete cache files
rm -rf /path/to/joomla/cache/*
rm -rf /path/to/joomla/tmp/*
Check .htaccess
If you used SEF URLs, ensure .htaccess is present and configured for the new domain.
Backup Testing
A backup that cannot be restored is worthless. Test your backups regularly:
Set up a staging environment
Restore the most recent backup to staging
Test all critical functions:
- Frontend pages load
- Admin login works
- Search returns results
- Forms submit
- User registration works
Verify database integrity:
CHECK TABLE jos_content;
CHECK TABLE jos_users;
CHECK TABLE jos_menu;
Common Mistakes
Only having one backup: If the backup file is on the same server as the site, a server failure destroys both the site and the backup. Always keep off-site backups (Dropbox, S3, or another server).
Not testing backups: A backup that fails to restore is useless. Test your backups monthly by restoring to a staging environment.
Excluding the database from a file backup: Backing up files without the database produces a useless archive. The database contains all your content, users, and configuration. Always back up both.
Forgetting to update configuration.php after domain change: If you restore to a new domain without updating configuration.php, the site loads but all URLs point to the old domain, and assets (images, CSS) fail to load.
Not securing the backup directory: The default Akeeba backup directory is web-accessible. Secure it via .htaccess:
<Directory "/administrator/components/com_akeeba/backup/">
Deny from all
</Directory>
Practice Questions
What is the Akeeba Backup .jpa file format, and what does it contain? Answer: The .jpa format is Akeeba's proprietary archive that contains compressed site files, a database SQL dump, backup metadata, and optional encryption. It is self-contained — one file holds everything needed to restore the site.
How do you restore a Joomla site using Kickstart? Answer: Upload kickstart.php and the .jpa backup file to the target server. Open kickstart.php in a browser, select the backup file, extract the archive, then enter the new database credentials. Kickstart updates configuration.php automatically.
Why should backups be stored off-site, and what are some off-site storage options? Answer: On-site backups are vulnerable to server failure, ransomware, and accidental deletion. Off-site storage options include Dropbox, Amazon S3, Google Drive, SFTP to another server, and external hard drives.
Challenge: Set up a complete backup and recovery system for a Joomla site. Install Akeeba Backup, configure a custom profile (exclude cache, tmp, logs), schedule daily backups via the task scheduler, and configure off-site storage to Dropbox. Then manually simulate a disaster: delete the database and some key files. Use Kickstart to restore from your latest backup. Document every step, including timestamps and any issues encountered.
FAQ
Mini Project
Your task is to create a complete backup and disaster recovery plan for a Joomla site.
- Install a Joomla 5 site with sample data and at least two extensions
- Install Akeeba Backup and create three backup profiles:
- Full site backup (daily)
- Database-only backup (hourly)
- Files-only backup (weekly)
- Configure off-site backup to at least one destination (use Dropbox or local directory)
- Schedule the full backup to run daily at 3:00 AM
- Take a manual backup using mysqldump
- Take a manual file backup using tar
- After you have three backups, simulate a disaster: drop all tables in the Joomla database
- Restore using Akeeba Kickstart
- Verify the site works completely (frontend, backend, search, extensions)
- Write a disaster recovery document that a non-technical person could follow
What's Next
Now that your backup Strategy is solid, learn about advanced user management:
Continue to Lesson 36: Joomla User Groups Deep Dive — Nested groups, inheritance, and custom access control.
Related lessons:
- {{< ilink "Joomla" "Joomla Database Maintenance" }} — Keep your recovered database healthy
- {{< ilink "Joomla" "Joomla Go-Live Checklist" }} — Pre-launch checks after migration
Built by the developers of DodaTech
Doda Browser, DodaZIP & Durga Antivirus Pro