View Single Post
  #23 (permalink)  
Old 12-22-2005, 01:50 PM
mubley mubley is offline
Active Member
 
Posts: 44
Default Try this test script

I've added some new code to get the mailbox ID. Please try the following script. The copy commands are commented out, so it won't actually back any mailboxes up, but it should output some info for each mailbox. Let it run for a few mailboxes (especially rwss920@redwingshoes.ca) and then kill it with Ctrl-C. Copy the output into your reply so I can make sure it looks OK.

Code:
#!/bin/bash

export time=`date +%Y-%m-%d_%H-%M-%S`
# Change this to the location where you want to store your backups
export backup_dir=/media/NO_NAME/zimbra/hot_backup/$time
mkdir -p $backup_dir
export zimbra_dir=/opt/zimbra
export index_dir=$zimbra_dir/index
export store_dir=$zimbra_dir/store

# We need mysqldump.  If it doesn't exist,
# copy mysql and modify it to call mysqldump.
if [ ! -e $zimbra_dir/bin/mysqldump ]
then
cp $zimbra_dir/bin/mysql $zimbra_dir/bin/mysqldump
sed -i 's|/bin/mysql |/bin/mysqldump |g' $zimbra_dir/bin/mysqldump
fi

# Get a list of all accounts and execute
# the contents of the for-loop for each account.
for i in `$zimbra_dir/bin/zmprov gaa`
do

# Beginning of for-loop

echo
echo --------------------------------------------------------
echo Backing up mailbox $i
echo --------------------------------------------------------

# Set zimbraAccountStatus to "maintenance"
#$zimbra_dir/bin/zmprov ma $i zimbraAccountStatus maintenance

# Verify that zimbraAccountStatus got set to "maintenance"
#$zimbra_dir/bin/zmprov ga $i |grep zimbraAccountStatus

# Use email address to get zimbra_id
zimbraId=`$zimbra_dir/bin/zmprov ga $i |grep zimbraId |sed 's|zimbraId: ||g'`
echo zimbraId is $zimbraId
zimbra_id=`$zimbra_dir/bin/mysql -e "use zimbra; select id from mailbox where account_id = '$zimbraId'"`
echo zimbra_id is $zimbra_id
zimbra_id=`echo $zimbra_id | sed 's|id ||g'`
echo zimbra_id is $zimbra_id

# Copy all files in $index_dir/0/$zimbra_id
#mkdir -p $backup_dir/$i/index/
#cp -r $index_dir/0/$zimbra_id/* $backup_dir/$i/index/
#du $backup_dir/$i/index/

# Copy all files in $store_dir/0/$zimbra_id
#mkdir -p $backup_dir/$i/store/
#cp -r $store_dir/0/$zimbra_id/* $backup_dir/$i/store/
#du $backup_dir/$i/store/

# Copy the user's MySQL database
#$zimbra_dir/bin/mysqldump mailbox$zimbra_id > $backup_dir/$i/mailbox$zimbra_id.sql
#ls -al $backup_dir/$i/mailbox$zimbra_id.sql

# Set zimbraAccountStatus to "active"
#$zimbra_dir/bin/zmprov ma $i zimbraAccountStatus active

# Verify that zimbraAccountStatus got set to "active"
#$zimbra_dir/bin/zmprov ga $i |grep zimbraAccountStatus

# End of for-loop
done

# All mailboxes have been backed up.
# Backup Zimbra master database and LDAP accounts database.
# First, set all accounts to maintenance.
echo
echo --------------------------------------------------------
echo Setting all accounts to maintenance mode to finish backup.
echo --------------------------------------------------------
for i in `$zimbra_dir/bin/zmprov gaa`
do
$zimbra_dir/bin/zmprov ma $i zimbraAccountStatus maintenance
done

echo
echo --------------------------------------------------------
echo Backing up Zimbra master database
echo --------------------------------------------------------
$zimbra_dir/bin/mysqldump zimbra > $backup_dir/zimbra.sql
ls -al $backup_dir/zimbra.sql

echo
echo --------------------------------------------------------
echo Backing up LDAP accounts database
echo --------------------------------------------------------
su - zimbra -c "$zimbra_dir/bin/zmslapcat /tmp/"
cp /tmp/ldap.bak $backup_dir/
rm /tmp/ldap.bak
ls -al $backup_dir/ldap.bak

echo
echo --------------------------------------------------------
echo Setting all accounts to active mode.
echo --------------------------------------------------------
for i in `$zimbra_dir/bin/zmprov gaa`
do
$zimbra_dir/bin/zmprov ma $i zimbraAccountStatus active
done

echo
echo --------------------------------------------------------
echo Backup is complete!
echo --------------------------------------------------------
Reply With Quote