In this Zimbra Administrator’s PowerTip, we’ll discuss how to move your instance of Zimbra to another machine. It applies to all version of Zimbra.

Administrator’s PowerTip
#4: October 09, 2007
Zimbra Forums – Zimbra wiki – Zimbra
Blog
Introduction
Either you, or someone you know has been there. Almost out of Disk space, RAM is topped out, and the CPU is constantly running above 80%. It’s time to upgrade the hardware. But how easy and safe is it to move the Zimbra server instance? Well, it’s easier than you might think.
In this Zimbra Administrator’s PowerTip, we’ll discuss how to migrate your Zimbra server to another Machine or OS. The one big caveat is that both instances of Zimbra MUST be running the same version. So if your old server is running 4.5.5, then you’ll need to install 4.5.5 on your new server. This wouldn’t be the time to upgrade your ZCS version.
Part 1 : Backing Up
Step by Step:
- As zimbra: zmcontrol stop
- As root: ps aux | grep zimbra (make sure everything’s stopped)
- Mount external disc to location of your choice. ex: /mnt/migration
- As root: rsync -avH /opt/zimbra /mnt/migration (this may take a while)
Zimbra Network Edition contains a backup feature, and although it’s useful, we won’t be using it in this tip.
We have an external Hard Disc mounted to /mnt/migration. When rsync’ed, this is now your live copy (although it’s not live), and you should always have a backup of your live data. So, you might want to rsync again to another location to be safe.
Once you’ve rsync’ed all your data, umount the external drive, and put it somewhere safe.
Part 2 : Meet Your New Server
Step by Step:
- Install Newer (supported) Operating System
- Turn off older ZCS Server
- Set up newer ZCS Server’s Network/Hostname is it was on the older server
The only thing that really matters on your new server, is whether or not meets Zimbra’s server Hardware and the Operating System requirements.
It’s also very important that you have resolved any dependency issues. The ZCS installer for your newer OS should check for these.
Setup the newer server with the old server’s networking attributes. Make sure your older server is offline.
If changing the hostname, please see this wiki article: Set zmhostname
Part 3 : Create a "dummy" Install Then Remove It
Step by Step:
- Download the version of ZCS (ie 4.5.5 or 4.0) for the new OS you have
- As Root: Run the installer with the -s option: ./install.sh -s
- As Root: Remove the dummy install: rm -rf /opt/zimbra
The goal of this step is to get the rpm/dpkg databases correct. When you download ZCS, make sure it’s for your newer OS, and the SAME version of ZCS that’s rsync’ed.
Run the installer with the -s option. This tells the installer to only install the software, and not to configure the installation.
Once the installer has completed, delete it by rm -rf /opt/zimbra. This wipes any dummy data you have in that location.
Part 4 : Mount Your Backup HD, rsync, and Install
Step by Step:
- Mount external Hard drive
- As Root: rsync your backup to the new location: rsync -avH /mnt/migration/zimbra /opt/
- Unmount external Hard drive and keep it safe
- As Root: run zmfixperms located in /opt/zimbra/libexec
- As Root: rerun the installer without the -s option
Connect and mount your external hard drive. Then, rsync the backed up data to its new location (rsync -avH /mnt/migration/zimbra /opt).
Connect and mount your external hard drive. Then, rsync the backed up data to its new location (rsync -avH /mnt/migration/zimbra /opt).
Unmount your backed up copy, and keep it in a safe place.
Now that our data is all in place, we need to fix some permissions. Go into the /opt/zimbra/libexec directory and run zmfixperms. This helps insure that all the files are owned correctly.
If uid/gid’s aren’t the same on both systems (see /etc/passwd and /etc/group) than you may need to modify /opt/zimbra/conf/localconfig.xml
If changing arch (32 to 64) see also http://blog.zimbra.com/blog/archives/2007/05/exporting-and-importing-zimbra-ldap-data.html and/or http://wiki.zimbra.com/wiki/Moving_ZCS_to_New_Server
Once that has completed, re run the installer that you downloaded. It will detect ZCS already installed, and ask if you want to upgrade. Select Yes.
on March 28th, 2010 at 1:42 pm
I have successfully used the above procedure to migrate a ZCS 6.0.5 Open Source Edition from Debian 5.0 amd64 to CentOS 5.4, but had to fix a problem with unresolved symbols after doing so.
After getting all the dependencies right (I installed with packages –nobase in kickstart file to have a real slick CentOS without all kinds of stuff that one never needs on a Zimbra server anyway), I had to manually remove this directory:
/opt/zimbra/zimbramon/lib/x86_64-linux-gnu-thread-multi/
This directory is just called “/opt/zimbra/zimbramon/lib/x86_64-linux-thread-multi/” (without gnu) when you install Zimbra on RHEL/CentOS 5. If it’s still there, Zimbramon will include stuff from the directory containing “gnu” first, and you will get unresolved symbol errors.
Regards,
Stijn
on May 10th, 2010 at 9:04 pm
Hi all
I’m Zimbra 6.06 user and I have a query/
The first time I installed zimbra, I did.
# ./install.sh –platform-override
(and blablabla)
Then, if I will install a new server for migrate my older, After Download, Should I do
# ./install.sh -s
(with the –platform-override option)
Example
# ./install -s –platform-override
(or only)
# ./install -s
Later you say
“”Once that has completed, re run the installer that you downloaded. It will detect ZCS already installed, and ask if you want to upgrade. Select Yes.”"
This is
# ./install.sh –platform-override or only
# ,/install.sh
Thank You
on May 23rd, 2010 at 10:34 am
Wonderfull tutorial, i have succeed moving my zimbra to a new machine.
Thank you
on June 3rd, 2010 at 8:39 pm
Nice tutorial, but how can I do a similar procedure, but moving from a single server install to a brand new multiserver installation?
Any tip/idea/tutorial?
Thanks a lot.
Ivan
on June 4th, 2010 at 6:34 am
Thanks for the article. Here are some of my observations
zmfixperms does not fix permissions for all the folders (newer versions of zimbra). you have to run “zmfixperms -extended” command. Even then the permissions for /opt/zimbra/.ssh is not fixed. You need to fix that manuaaly using chowm command.
on June 16th, 2010 at 1:45 am
./install.sh -s –platform-override option is working.
Nice tutorial.
Thanks
Arun
on July 16th, 2010 at 2:57 pm
Very nice tutorial.
Amar is right, the zmfixperms doesn’t fix all the permissions.
I had troubles with the zimbra store, so I had to fix them manually with the command (as root)
# chown -R zimbra:zimbra /opt/zimbra/store/
[spanish]
Excelente tutorial.
Amar tiene razón, el comando zmfixperms no soluciona todos los permisos.
Tuve problemas con el Zimbra store, así que tuve que corregirlos manualmente con el comando (como root)
# chown -R zimbra:zimbra /opt/zimbra/store/
on September 23rd, 2010 at 6:23 pm
Hello,
I followed all the procedures, but to rerun the install.sh command (without-s) is I get the following error:
Restoring existing configuration file from /opt/zimbra/.saveconfig/localconfig.xml … done
Operations logged to /tmp/zmsetup.09232010-130655.log
Upgrading from to 6.0.4_GA_2038
Stopping zimbra services…done
Starting musql…done
ERROR 1033 (HY000) at line 1: Incorrect information in file: ‘./zimbra/config.frm’
Thu Sep 23 13:08:45 2010: Error while running ‘/opt/zimbra/bin/mysql –user=zimbra –password=XXXX –database=zimbra –bach –skip-column-names’
Any suggestions? Tanks.
on February 18th, 2011 at 11:36 am
Hai
I tried this tip for migrating zcs6.0.5. It’s working fine
Thank you
Loganathan