Open Source Edition Backup Procedure: Difference between revisions
(LVM Script; cleanup.) |
|||
Line 1: | Line 1: | ||
If you wish to have a more automated backup feature, you should try the [Network Version of Zimbra.] | If you wish to have a more automated backup feature, you should try the [Network Version of Zimbra.] | ||
==Backup Scripts== | |||
===Backup Using LVM=== | |||
If you have your Zimbra installation on its own logical volume, you can use this script: | |||
== Preparing to Back Up == | #!/bin/bash | ||
time=`date +%Y-%m-%d_%H-%M-%S` | |||
# Modify the following variables according to your installation | |||
######################################### | |||
# backup_dir - directory to backup to | |||
backup_dir=/path/to/backups/$time | |||
# vol_group - the Volume Group that contains $zimbra_vol | |||
vol_group=PUT_VOL_GROUPNAME_HERE | |||
# zimbra_vol - the Logical Volume that contains /opt/zimbra | |||
zimbra_vol=PUT_ZIMBRA_VOLNAME_HERE | |||
# Do not change anything beyond this point | |||
######################################### | |||
# Test for an interactive shell | |||
if <nowiki>[[ $- != *i* ]]</nowiki> | |||
then say() { echo -e; } | |||
# Colors, yo! | |||
GREEN="\e[1;32m" | |||
RED="\e[1;31m" | |||
CYAN="\e[1;36m" | |||
PURPLE="\e[1;35m" | |||
else say() { true; } # Do nothing | |||
fi | |||
# Output date | |||
say $GREEN"Backup started at "$RED`date`$GREEN"." | |||
# Stop the Zimbra services | |||
say $CYAN"Stopping the Zimbra services..." | |||
say $PURPLE" This may take several minutes." | |||
/etc/init.d/zimbra stop | |||
# Create a logical volume called ZimbraBackup | |||
say $GREEN"Creating a LV called ZimbraBackup:"$PURPLE | |||
/usr/sbin/lvcreate -L1000M -s -n ZimbraBackup /dev/$vol_group/$zimbra_vol | |||
# Create a mountpoint to mount the logical volume to | |||
say $GREEN"Creating a mountpoint for the LV..." | |||
mkdir -p /tmp/ZimbraBackup | |||
# Mount the logical volume to the mountpoint | |||
say $GREEN"Mounting the LV..." | |||
mount /dev/$vol_group/ZimbraBackup /tmp/ZimbraBackup/ | |||
# Start the Zimbra services | |||
say $CYAN"Starting the Zimbra services..." | |||
/etc/init.d/zimbra start & | |||
# For testing only | |||
#say $RED"Press Enter to continue...\e[0m" | |||
#read input | |||
# Create the current backup | |||
say $GREEN"Creating the backup directory..." | |||
mkdir -p $backup_dir | |||
tar zcvf $backup_dir/zimbra.backup.tar.gz /tmp/ZimbraBackup/zimbra/ 2&> /dev/null | |||
# Unmount /tmp/ZimbraBackup and remove the logical volume | |||
say $GREEN"Unmounting and removing the LV."$PURPLE | |||
umount /tmp/ZimbraBackup/ | |||
/usr/sbin/lvremove --force /dev/$vol_group/ZimbraBackup | |||
# Done! | |||
say $GREEN"Zimbra backed up to "$CYAN$backup_dir$GREEN"!" | |||
say $GREEN"Backup ended at "$RED`date`$GREEN".\e[0m" | |||
==Emergency Repairs== | |||
=== Preparing to Back Up === | |||
''Before we begin, make sure that you are logged in as a user that can perform the tasks outlined here.'' | ''Before we begin, make sure that you are logged in as a user that can perform the tasks outlined here.'' | ||
It is always good practice to backup your copy of Zimbra in the event of unforeseen circumstances. | It is always good practice to backup your copy of Zimbra in the event of unforeseen circumstances. | ||
Line 15: | Line 90: | ||
to terminate Zimbra. | to terminate Zimbra. | ||
If you get some kind of error, you may want to make sure that Zimbra has completly stopped by running: | If you get some kind of error, you may want to make sure that Zimbra has completly stopped by running: | ||
Line 23: | Line 97: | ||
and kill any left over processes such as the log. | and kill any left over processes such as the log. | ||
== | === Backing Up === | ||
''Make sure that the copy location has enough space to support your backup copy (i.e. the /tmp folder probably isn't the best location). '' | ''Make sure that the copy location has enough space to support your backup copy (i.e. the /tmp folder probably isn't the best location). '' | ||
Since all of the components Zimbra needs are stored in the Zimbra folder itself, you can simply copy the folder to a safe location. | Since all of the components Zimbra needs are stored in the Zimbra folder itself, you can simply copy the folder to a safe location. | ||
Line 37: | Line 110: | ||
'''Note''': It is a very good idea to tag your installation with the version/build of zimbra that will be backed up (ie 3.0.0_GA_156) and the date of backup. You'll need this later. | '''Note''': It is a very good idea to tag your installation with the version/build of zimbra that will be backed up (ie 3.0.0_GA_156) and the date of backup. You'll need this later. | ||
== Restoring == | === Restoring === | ||
''Before restoring, you should make sure that all of the processes accociated with the damaged/failed Zimbra installation are terminated. Failure to terminate all of the processes could have dire consquences. See "Preparing to Backup" for additional info.'' | ''Before restoring, you should make sure that all of the processes accociated with the damaged/failed Zimbra installation are terminated. Failure to terminate all of the processes could have dire consquences. See "Preparing to Backup" for additional info.'' | ||
====Rename your "broken" Zimbra installation.'''' | |||
You may be able to scavenge data, if needed. If you simply do not want the old data, you can skip this part. | You may be able to scavenge data, if needed. If you simply do not want the old data, you can skip this part. | ||
Line 55: | Line 127: | ||
>[insert command for renaming here] | >[insert command for renaming here] | ||
====Downloading a Dummy Copy of Zimbra==== | |||
Now, we need to know what build/version of zimbra you were running. If you followed the backup instructions above, then the backup folder should be tagged with the version/build you have backed up. | Now, we need to know what build/version of zimbra you were running. If you followed the backup instructions above, then the backup folder should be tagged with the version/build you have backed up. | ||
Line 65: | Line 135: | ||
If you don't know your version number, you can find it by [insert way here]. | If you don't know your version number, you can find it by [insert way here]. | ||
====Installing the Dummy Copy of Zimbra==== | |||
Once you have downloaded the tar file, you will need to uncompress it by: | Once you have downloaded the tar file, you will need to uncompress it by: | ||
Line 80: | Line 148: | ||
'''WARNING''': Do not run the script with the -u option. You will remove all of your backup data & you must run the script as root, NOT ZIMBRA. | '''WARNING''': Do not run the script with the -u option. You will remove all of your backup data & you must run the script as root, NOT ZIMBRA. | ||
The script will remove the existing packages, and install them again. '''The script will attempt to stop Zimbra Services and "UPGRADE FAILED - exiting". This is okay, simply rerun the script, and it will install normally.''' | The script will remove the existing packages, and install them again. '''The script will attempt to stop Zimbra Services and "UPGRADE FAILED - exiting". This is okay, simply rerun the script, and it will install normally.''' | ||
Line 102: | Line 153: | ||
If you experence error 389, -1, connection refused errors, please search the Forums. These errors are covered extensivly. | If you experence error 389, -1, connection refused errors, please search the Forums. These errors are covered extensivly. | ||
====Resetting Permissions==== | |||
If you are up and running now, you may have one more hurdle to overcome: permissions. | If you are up and running now, you may have one more hurdle to overcome: permissions. |
Revision as of 16:33, 6 July 2006
If you wish to have a more automated backup feature, you should try the [Network Version of Zimbra.]
Backup Scripts
Backup Using LVM
If you have your Zimbra installation on its own logical volume, you can use this script:
#!/bin/bash time=`date +%Y-%m-%d_%H-%M-%S` # Modify the following variables according to your installation ######################################### # backup_dir - directory to backup to backup_dir=/path/to/backups/$time # vol_group - the Volume Group that contains $zimbra_vol vol_group=PUT_VOL_GROUPNAME_HERE # zimbra_vol - the Logical Volume that contains /opt/zimbra zimbra_vol=PUT_ZIMBRA_VOLNAME_HERE # Do not change anything beyond this point ######################################### # Test for an interactive shell if [[ $- != *i* ]] then say() { echo -e; } # Colors, yo! GREEN="\e[1;32m" RED="\e[1;31m" CYAN="\e[1;36m" PURPLE="\e[1;35m" else say() { true; } # Do nothing fi # Output date say $GREEN"Backup started at "$RED`date`$GREEN"." # Stop the Zimbra services say $CYAN"Stopping the Zimbra services..." say $PURPLE" This may take several minutes." /etc/init.d/zimbra stop # Create a logical volume called ZimbraBackup say $GREEN"Creating a LV called ZimbraBackup:"$PURPLE /usr/sbin/lvcreate -L1000M -s -n ZimbraBackup /dev/$vol_group/$zimbra_vol # Create a mountpoint to mount the logical volume to say $GREEN"Creating a mountpoint for the LV..." mkdir -p /tmp/ZimbraBackup # Mount the logical volume to the mountpoint say $GREEN"Mounting the LV..." mount /dev/$vol_group/ZimbraBackup /tmp/ZimbraBackup/ # Start the Zimbra services say $CYAN"Starting the Zimbra services..." /etc/init.d/zimbra start & # For testing only #say $RED"Press Enter to continue...\e[0m" #read input # Create the current backup say $GREEN"Creating the backup directory..." mkdir -p $backup_dir tar zcvf $backup_dir/zimbra.backup.tar.gz /tmp/ZimbraBackup/zimbra/ 2&> /dev/null # Unmount /tmp/ZimbraBackup and remove the logical volume say $GREEN"Unmounting and removing the LV."$PURPLE umount /tmp/ZimbraBackup/ /usr/sbin/lvremove --force /dev/$vol_group/ZimbraBackup # Done! say $GREEN"Zimbra backed up to "$CYAN$backup_dir$GREEN"!" say $GREEN"Backup ended at "$RED`date`$GREEN".\e[0m"
Emergency Repairs
Preparing to Back Up
Before we begin, make sure that you are logged in as a user that can perform the tasks outlined here.
It is always good practice to backup your copy of Zimbra in the event of unforeseen circumstances.
To prevent changes to any Zimbra databases during the backup processes you may wish to use:
>su zimbra
>zmcontrol stop
to terminate Zimbra.
If you get some kind of error, you may want to make sure that Zimbra has completly stopped by running:
>ps auxww | grep zimbra
and kill any left over processes such as the log.
Backing Up
Make sure that the copy location has enough space to support your backup copy (i.e. the /tmp folder probably isn't the best location).
Since all of the components Zimbra needs are stored in the Zimbra folder itself, you can simply copy the folder to a safe location.
It may be possible to create a cron job to do these tasks automatically.
Copy Command: cp -rp /opt/zimbra [location path]
Depending on your hardware and the amount of data contained in your Zimbra installation, this process can take a while.
Note: It is a very good idea to tag your installation with the version/build of zimbra that will be backed up (ie 3.0.0_GA_156) and the date of backup. You'll need this later.
Restoring
Before restoring, you should make sure that all of the processes accociated with the damaged/failed Zimbra installation are terminated. Failure to terminate all of the processes could have dire consquences. See "Preparing to Backup" for additional info.
====Rename your "broken" Zimbra installation.'
You may be able to scavenge data, if needed. If you simply do not want the old data, you can skip this part.
>[insert command for renaming here]
You may want to move it completly out of the /opt folder just to be safe.
Copy your backup Zimbra installation to the /opt folder and name it "zimbra".
>cp -rp [location of backup] /opt
>[insert command for renaming here]
Downloading a Dummy Copy of Zimbra
Now, we need to know what build/version of zimbra you were running. If you followed the backup instructions above, then the backup folder should be tagged with the version/build you have backed up.
You need to download the full install of the Zimbra version you were running. You may find all Zimbra releases at: Sourceforge.
If you don't know your version number, you can find it by [insert way here].
Installing the Dummy Copy of Zimbra
Once you have downloaded the tar file, you will need to uncompress it by:
>tar -xvzf [name of file].tgz
This will create a folder in the directory named "zcs", cd to it and run the install script:
>cd zcs
>./install.sh
WARNING: Do not run the script with the -u option. You will remove all of your backup data & you must run the script as root, NOT ZIMBRA.
The script will remove the existing packages, and install them again. The script will attempt to stop Zimbra Services and "UPGRADE FAILED - exiting". This is okay, simply rerun the script, and it will install normally.
If you experence error 389, -1, connection refused errors, please search the Forums. These errors are covered extensivly.
Resetting Permissions
If you are up and running now, you may have one more hurdle to overcome: permissions.
You may need to reset the permissions on the message store by running the following:
>chown -R zimbra:zimbra /opt/zimbra/st*