- Here we'll automate backup and restore tasks for real middleware & DevOps systems like Jenkins, Tomcat, WebSphere, MySQL, Docker, and Apache.
- Each example includes a working restore script and troubleshooting tips. ⚙️
π Table of Contents
- 1️⃣ Jenkins Backup & Restore
- 2️⃣ Tomcat Backup & Restore
- 3️⃣ WebSphere Backup & Restore
- 4️⃣ MySQL Database Backup & Restore
- 5️⃣ Docker Containers Backup & Restore
- 6️⃣ Apache Webserver Backup & Restore
- 7️⃣ Automating Backups
- π§ Pro Tips & Troubleshooting
- π Summary
1️⃣ Jenkins Backup & Restore
#!/bin/bash
JENKINS_HOME="/var/lib/jenkins"
BACKUP_DIR="/opt/backups/jenkins"
mkdir -p $BACKUP_DIR
tar -czf $BACKUP_DIR/jenkins_$(date +%F_%H-%M).tar.gz -C $JENKINS_HOME .
echo "✅ Jenkins backup created in $BACKUP_DIR"
♻️ Restore Jenkins
#!/bin/bash
BACKUP_FILE="/opt/backups/jenkins/jenkins_2025-11-02_02-10.tar.gz"
service jenkins stop
tar -xzf "$BACKUP_FILE" -C /var/lib/jenkins
chown -R jenkins:jenkins /var/lib/jenkins
service jenkins start
echo "♻️ Jenkins restored successfully."
2️⃣ Tomcat Backup & Restore
#!/bin/bash
TOMCAT_HOME="/opt/tomcat"
BACKUP_DIR="/opt/backups/tomcat"
mkdir -p $BACKUP_DIR
tar -czf $BACKUP_DIR/tomcat_$(date +%F).tar.gz $TOMCAT_HOME/webapps $TOMCAT_HOME/conf
echo "π¦ Tomcat backup completed."
♻️ Restore Tomcat
#!/bin/bash
BACKUP_FILE="/opt/backups/tomcat/tomcat_2025-11-02.tar.gz"
service tomcat stop
tar -xzf "$BACKUP_FILE" -C /
service tomcat start
echo "♻️ Tomcat restored and restarted."
3️⃣ WebSphere Backup & Restore
#!/bin/bash
WAS_PROFILE="/opt/IBM/WebSphere/AppServer/profiles/AppSrv01"
BACKUP_DIR="/opt/backups/websphere"
mkdir -p $BACKUP_DIR
tar -czf $BACKUP_DIR/was_$(date +%F_%H-%M).tar.gz -C $WAS_PROFILE .
echo "π WebSphere configuration backup done."
♻️ Restore WebSphere
#!/bin/bash
BACKUP_FILE="/opt/backups/websphere/was_2025-11-02_03-00.tar.gz"
service was stop
tar -xzf "$BACKUP_FILE" -C /opt/IBM/WebSphere/AppServer/profiles/AppSrv01
service was start
echo "♻️ WebSphere restored successfully."
4️⃣ MySQL Database Backup & Restore
#!/bin/bash
DB="middlewaredb"
USER="root"
PASS="Secret123"
BACKUP_DIR="/opt/backups/mysql"
mkdir -p $BACKUP_DIR
mysqldump -u $USER -p$PASS $DB > $BACKUP_DIR/${DB}_$(date +%F).sql
gzip $BACKUP_DIR/${DB}_$(date +%F).sql
echo "π️ MySQL backup completed."
♻️ Restore MySQL
#!/bin/bash
BACKUP_FILE="/opt/backups/mysql/middlewaredb_2025-11-02.sql.gz"
gunzip "$BACKUP_FILE"
mysql -u root -pSecret123 middlewaredb < /opt/backups/mysql/middlewaredb_2025-11-02.sql
echo "✅ Database restored successfully."
5️⃣ Docker Containers Backup & Restore
#!/bin/bash
BACKUP_DIR="/opt/backups/docker"
mkdir -p $BACKUP_DIR
for cid in $(docker ps -q); do
cname=$(docker inspect --format='{{.Name}}' $cid | cut -d'/' -f2)
docker export $cid > $BACKUP_DIR/${cname}_$(date +%F).tar
done
echo "π³ Docker containers exported successfully."
♻️ Restore Docker Container
#!/bin/bash
BACKUP_FILE="/opt/backups/docker/myapp_2025-11-02.tar"
docker import "$BACKUP_FILE" myapp_restored:latest
docker run -d --name myapp_restored myapp_restored:latest
echo "♻️ Docker container restored and running."
6️⃣ Apache Webserver Backup & Restore
#!/bin/bash
BACKUP_DIR="/opt/backups/apache"
mkdir -p $BACKUP_DIR
tar -czf $BACKUP_DIR/apache_$(date +%F).tar.gz /etc/apache2 /var/www/html /etc/ssl
echo "π Apache configuration, website, and SSL backed up."
♻️ Restore Apache
#!/bin/bash
BACKUP_FILE="/opt/backups/apache/apache_2025-11-02.tar.gz"
tar -xzf "$BACKUP_FILE" -C /
service apache2 restart
echo "✅ Apache restored and running."
7️⃣ Automating Backups
Schedule automatic backups using cron so your systems stay protected 24×7.
# Run daily at 2 AM
0 2 * * * /opt/scripts/backup_all.sh >> /var/log/backup_all.log 2>&1
# Run on every reboot
@reboot /opt/scripts/backup_all.sh >> /var/log/backup_boot.log 2>&1
π¬ Output:
[CRON] Scheduled backup started…✅ Jenkins, Tomcat, WebSphere, MySQL, Docker, Apache backed up successfully.
π§ Pro Tips & Troubleshooting
✅ General Best Practices
- Use a dedicated
/opt/backupspartition or NFS mount to avoid filling system drives. - Compress large backups with
gziporzstd[Developed by Meta] for better space efficiency. - Store daily, weekly, and monthly copies separately (retention policy).
- Automate restores in a test environment weekly to ensure recovery works.
⚙️ Troubleshooting Common Issues
- ❌ Permission Denied: Run backups as
sudoor fix ownership usingchown. - π¦ Disk Full: Use
df -hto check space before backup. Add cleanup logic for old files. - π§Ύ Log Rotation: Add
logrotateentry to keep backup logs small and readable.
π Summary
- ✅ Full backup & restore automation for all major middleware and DevOps tools.
- π§© Scripts are modular, reusable, and easy to integrate in CI/CD pipelines.
- ⚙️ Cron ensures zero manual intervention for daily protection.
No comments:
Post a Comment