Skip to content

Instantly share code, notes, and snippets.

@Log1x
Last active August 20, 2018 00:23
Show Gist options
  • Save Log1x/20027dc42465dc00f1b95c5ce548aba2 to your computer and use it in GitHub Desktop.
Save Log1x/20027dc42465dc00f1b95c5ce548aba2 to your computer and use it in GitHub Desktop.
Backup cPanel user webroots & individual MySQL databases
#!/bin/bash
backup=/home/backups
echo Changing to /home...
cd /home
echo Backing up users webroot...
mkdir -p $backup
for dir in */; do
if [ $dir == 'cPanelInstall/' ] || [ $dir == 'virtfs/' ] || [ $dir == 'cpanelsolr/' ] || [ $dir == 'clamav/' ] || [ $dir == 'latest/' ] || [ $dir == 'aquota.user/' ] || [ $dir == 'aquota.group/' ] || [ $dir == 'backups/' ]; then
echo Skipping $(basename $dir)...
continue
else
echo Backing up $(basename $dir)/public_html...
tar -czf "$backup/$(basename $dir).tar.gz" "$(basename $dir)/public_html"
fi
done
echo Backing up databases...
mkdir -p $backup/mysql
mysql -e 'show databases' > /tmp/mysql.txt
for db in `cat /tmp/mysql.txt`; do
if [ $db == 'information_schema' ] || [ $db == 'Database' ] || [ $db == 'cphulkd' ] || [ $db == 'leechprotect' ] || [ $db == 'modsec' ] || [ $db == 'mysql' ] || [ $db == 'performance_schema' ] || [ $db == 'roundcube' ]; then
echo Skipping $db.sql...
continue
else
echo Dumping $db.sql...
mysqldump $db > $backup/mysql/$db.sql;
fi
done
tar -czf "$backup/mysql.tar.gz" $backup/mysql
rm -rf $backup/mysql
echo Backup complete.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment