Skip to content

Web-Server Transition

Monday, 8 April 2019 | Christoph Cullmann


Several years the kate-editor.org & cullmann.io pages got hosted on a Hetzner root server. To reduce costs and switch away from old hardware they got now moved to a OpenVZ based virtual server at Host Europe.

On both servers CentOS 7.x is running, it did always provide a stable foundation of the web services.

As with any server move in the past, I always need to search how to best move the data/config from one server to the other. To document this for me and others, here the quick way to move the basic things needed for web services using just plain Apache & MariaDB.

The following steps assume you have installed the same packages on both machines and the new machine is allowed to ssh as root to the old one. If you have non-system users, you should create them with the same ids as on the old server.

For the following shell commands, the old server address is $SERV and the MariaDB root password is $PASS on both machines. Best use the raw IP as address if you are in parallel updating your DNS entries to avoid confusion (and wrong syncs).

Attention: Wrong syncing of stuff can have disastrous consequences! Check all commands again before executing them, don’t trust random people like me without verification!

  • sync your data, assuming it is in /home and /srv/(ftp/www)

rsync –delete -av root@$SERV:/home/ /home
rsync –delete -av root@$SERV:/srv/ftp /srv
rsync –delete -av root@$SERV:/srv/www /srv

  • transfer your databases

ssh root@$SERV “mysqldump -u root -p$PASS –all-databases > /root/db.sql”
scp root@$SERV:/root/db.sql /root/
mysql -u root -p$PASS < /root/db.sql

  • sync configs (you might need more, this is just apache & vsftp)

rsync –delete -av root@$SERV:/etc/httpd /etc
rsync –delete -av root@$SERV:/etc/letsencrypt /etc
rsync –delete -av root@$SERV:/etc/vsftpd /etc

  • get crontabs over for later re-use, store them in the root home

rsync –delete -av root@$SERV:/var/spool/cron /root

Now all things should be there and after some service restarts e.g. WordPress powered pages should be up-and-running again.

I hope this short how-to helps others and allows me to avoid searching stuff in the future once again from scratch.