# +----+----+----+----+ # | | | | | # Author: Mark David Scott Cunningham | M | D | S | C | # +----+----+----+----+ # Created: 2015-07-20 # Updated: 2015-07-20 # # #!/bin/bash cpbackup="$1"; shift; dblist="$@" for dbname in $dblist; do echo # Select account backup file based on dbname account=$(echo $dbname | cut -d_ -f1) if [[ -f ${cpbackup}/$account.tar.gz ]]; then backup=${cpbackup}/$account.tar.gz; else echo "Could not find expected archive :: $backup"; exit 1; fi echo "$dbname :: Account: $account" echo "$dbname :: Archive: $backup" # Backup current database contents echo "$dbname :: Running backup of current data" mysqldump --opt --single-transaction $dbname | gzip -c --fast > $dbname.sql.gz; # Extract the database backup from the account backup # This will extract a file into the PWD in a folder # structure like in the archive $PWD/user/mysql/database.sql echo "$dbname :: Extracting $dbname.sql file from $backup" restore=$(tar -tf $backup | grep $dbname.sql); tar -zxf $backup $restore; # Empty out current database, and restore backup copy echo "$dbname :: Dropping and creating empty $dbname" mysql -e "drop $dbname; create $dbname"; echo "$dbname :: Importing extracted $restore backup" cat $PWD/$restore | mysql; # Use Cpanel dbmaptool to assign newly minted DB to account echo "$dbname :: Assigning new database to account :: $account" /usr/local/cpanel/bin/dbmaptool $account --type mysql --dbs $dbname done