This article will guide you through the necessary steps to restore your data from a previous cPanel environment that is no longer functional. Examples are when a harddrive is dying and is no longer bootable, when a system is compromised via root, or even if you are moving from an old server to a new one (although the netcat over SSH method is preferred).
Restoring the data is just a matter of rsync-ing over certain directories and configuration files.
Let's begin by syncing over important /etc/ configuration files:
cd /olddrive/etc/ rsync -avHz user* trueuser* domainips secondarymx domainalias valiases vfiltersexim* backupmxhosts proftpd* pure-ftpd* logrotate.conf passwd* group* *domain* *named* wwwacct.conf cpbackup.conf cpupdate.conf quota.conf shadow* *rndc* ips* ipaddrpool* ssl hosts spammer* skipsmtpcheckhosts relay* localdomains remotedomains my.cnf /etc
/etc/crontab
and /etc/cron.d/
if you have custom cron scripts.
Next up is Apache and its configuration:
rsync -avHz /olddrive/usr/local/apache/conf /usr/local/apache rsync -avHz /olddrive/usr/local/apache/modules /usr/local/apache rsync -avHz /olddrive/usr/local/apache/domlogs /usr/local/apache
Next is named (bind). This is only needed if you run your own DNS:
rsync -avHz /olddrive/var/named /var
Next we'll do cPanel and it's related configurations:
rsync -avHz /olddrive/usr/local/cpanel /usr/local
Next up, MySQL databases:
rsync -avHz /olddrive/var/lib/mysql /var/lib
Misc cPanel files and templates:
rsync -avHz /olddrive/var/cpanel /var
Client and server SSL certificates:
rsync -avHz /olddrive/usr/share/ssl /usr/share
User bandwidth data:
rsync -avHz /olddrive/var/log/bandwidth /var/log
Exim's mail queue:
rsync -avHz /olddrive/var/spool/cron /var/spool
Root user MySQL configuration:
rsync -avHz /olddrive/root/.my.cnf /root
Finally, all user data (mail, web files, etc.):
rsync -avHz --exclude=virtfs/ /olddrive/home/* /home
Because we've changed some cPanel files around and imported a bunch of user data, we'll want to make sure that these changes are picked up:
/scripts/upcp --force /scripts/easyapache /scripts/initquotas /scripts/eximup --force /scripts/mysqlup --force /etc/init.d/cpanel restart /scripts/restartsrv_apache /scripts/restartsrv_exim /scripts/restartsrv_named
Since we copied over the contents of /var/cpanel
, your previously saved Apache/PHP build options will be retained when /scripts/easyapache
is run above (select Previously Saved Config).
Since this is a “new” install of cPanel, you'll have to run through the WHM Setup Wizard once again upon first login. Just enter the settings as you prefer them/as they were before. If you do not recall some of your previous settings such as nameservers, hostname, or contact email, they can all be found in /etc/wwwacct.conf.
If you have recovered from a recent backup or otherwise have a stale copy of your data and want to synchronize mail from another server, you can do so over the network with the following command:
for i in `cat /etc/trueuserdomains|awk '{print $2}'`;do rsync -avHz -e "ssh" --progress /home/$i/mail/* ip.ip.ip.ip:/home/$i/mail;done
In the example above the command is run from the source machine where ip.ip.ip.ip is the destination machine. Since this loops through all the users, it's going to ask you for a password each time. To avoid this authenticate the source machine using an ssh key before running the command:
ssh-keygen –t rsa ssh-copy-id root@ip.ip.ip.ip