-
-
Save ngvannguyen/5688e548132054a454e35e5abd694f95 to your computer and use it in GitHub Desktop.
Restore Zimbra's ldap, mysql and config from backup, as well as the store
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/bin/bash | |
| # utility functions | |
| run_as_zimbra() { | |
| chroot --userspec zimbra:zimbra / "${@}" | |
| } | |
| export PATH=/opt/zimbra/bin:$PATH:/opt/zimbra/libexec | |
| source ~zimbra/bin/zmshutil ; zmsetvars | |
| # global variables we'll use... | |
| store_backup=/opt/zimbra.restorable/store | |
| config_backup=/opt/zimbra.restorable/ | |
| mysql_backup=/opt/zldapbackup/ | |
| ldap_backup=/opt/zldapbackup/ | |
| zimbra_path=/opt/zimbra/ | |
| configs=( conf .saveconfig java/jre/lib/security/cacerts mailboxd/etc/keystore ) | |
| cp=rsync ${verbose} -HaS | |
| # Parse options... | |
| case $1 in | |
| -v|--verbose|--debug) verbose=--verbose | |
| esac | |
| ## step one, stop the world. | |
| run_as_zimbra zmcontrol stop | |
| # restore mysql | |
| run_as_zimbra mysql.server restart | |
| databases=( $( run_as_zimbra mysql --batch --skip-column-names -u root --password=${mysql_root_password} -e "show databases" \ | |
| | awk '!/(information|performance)_schema|mysql/{print $1}' ) ) | |
| for db in "${databases[@]}" ; do | |
| run_as_zimbra mysql ${verbose} --batch --skip-column-names -u root --password=${mysql_root_password} -e "drop database ${db};" | |
| sleep 0.1; | |
| done | |
| run_as_zimbra mysql ${verbose} --batch -u root --password=${mysql_root_password} < "${mysql_backup}/mysql_dbs.sql" | |
| run_as_zimbra mysql.server stop | |
| # restore ldap.. | |
| rm ${verbose} -rf ~zimbra/data/ldap/config | |
| rm ${verbose} -rf ~zimbra/data/ldap/mdb | |
| run_as_zimbra mkdir -p ~zimbra/data/ldap/config ~zimbra/data/ldap/mdb/db | |
| run_as_zimbra zmslapadd -c ${ldap_backup}/ldap-config.bak | |
| run_as_zimbra zmslapadd ${ldap_backup}/ldap.bak | |
| # Restore configurations.. | |
| for item in ${configs[@]} ; do | |
| rm ${verbose} -rf ${zimbra_path}/${item} | |
| ${cp} ${config_backup}/${item} ${zimbra_path}/ | |
| done | |
| zmlocalconfig -e zimbra_uid=$( id -u zimbra) | |
| zmlocalconfig -e mailboxd_keystore_password=1sGyXAm3j | |
| # Restore mail store | |
| rm ${verbose} -rf ${zimbra_path}/store | |
| ${cp} ${store_backup}/store ${zimbra_path}/ | |
| ${cp} ${store_backup}/index ${zimbra_path}/ | |
| zmfixperms ${verbose} --extended | |
| ## start | |
| run_as_zimbra zmcontrol start | |
| # make sure compression is on... | |
| zmvolume -e -id 0 -c true | |
| zmvolume -e -id 1 -c true |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment