? Backup Configuration and Management
ISPConfig Backup System
ISPConfig includes an integrated backup system that can automatically backup websites and databases.
Configuring Website Backups
- Navigate to Sites → Websites
- Select website to configure
- Go to "Backup" tab
- Configure backup settings:
- Backup interval: Daily, Weekly, or Monthly
- Number of backups: How many to keep (1-10)
- Backup directory: /var/backup or custom
- Backup format: tar.gz (compressed)
- Exclude directories: Specify folders to skip
- Save configuration
Backup Schedule Options
Interval | When Runs | Best For |
---|---|---|
Daily | Every night at 00:30 | Active websites, e-commerce |
Weekly | Sunday night | Regular websites, blogs |
Monthly | 1st of month | Static websites |
What Gets Backed Up
- Website backup includes:
- All files in web directory
- Website configuration
- SSL certificates
- Cron jobs
- FTP users
- Database backup includes:
- Complete database dump
- All tables and data
- Stored procedures
- Triggers and views
Manual Backup Creation
Via Command Line
# Backup website files
tar -czf website_backup.tar.gz /var/www/clients/client1/web1/web/
# Backup database
mysqldump -u root -p database_name > database_backup.sql
# Combined backup with timestamp
DATE=$(date +%Y%m%d_%H%M%S)
tar -czf backup_$DATE.tar.gz /var/www/clients/client1/web1/
mysqldump -u root -p c1_database | gzip > db_backup_$DATE.sql.gz
Backup Storage Locations
- Local backup: /var/backup/web[ID]
- Custom location: Define in backup settings
- Remote backup: Mount remote storage via NFS/CIFS
- Cloud backup: Sync to cloud storage separately
Restoring from Backup
Restore Website Files
- Locate backup file in /var/backup/
- Extract to temporary location:
tar -xzf backup.tar.gz -C /tmp/restore/
- Copy files to website directory:
cp -R /tmp/restore/web/* /var/www/clients/client1/web1/web/
- Fix permissions:
chown -R web1:client1 /var/www/clients/client1/web1/web/
Restore Database
# Restore from SQL dump
mysql -u username -p database_name < backup.sql
# Restore compressed backup
gunzip < backup.sql.gz | mysql -u username -p database_name
# Restore via phpMyAdmin
# 1. Login to phpMyAdmin
# 2. Select database
# 3. Import → Choose file → Go
Automated Backup Scripts
Custom backup script example:
#!/bin/bash
# ISPConfig backup script
# Variables
BACKUP_DIR="/backup"
DATE=$(date +%Y%m%d)
WEBSITE="/var/www/clients/client1/web1"
DATABASE="c1_database"
# Create backup directory
mkdir -p $BACKUP_DIR/$DATE
# Backup website
tar -czf $BACKUP_DIR/$DATE/web_$DATE.tar.gz $WEBSITE
# Backup database
mysqldump -u root -pPASSWORD $DATABASE | gzip > $BACKUP_DIR/$DATE/db_$DATE.sql.gz
# Delete old backups (keep 7 days)
find $BACKUP_DIR -type d -mtime +7 -exec rm -rf {} ;
# Send notification
echo "Backup completed for $DATE" | mail -s "Backup Report" admin@domain.com
Backup Best Practices
- Schedule regular automated backups
- Keep multiple backup versions
- Store backups offsite/cloud
- Test restore process regularly
- Document backup procedures
- Monitor backup job success
- Encrypt sensitive backups
Off-site Backup Solutions
- rsync: Sync to remote server
- FTP/SFTP: Upload to backup server
- Cloud sync: AWS S3, Google Cloud, Dropbox
- Backup services: Third-party backup solutions