If you are a regular reader of Bitsnapper, you may have noticed that I haven’t written a post from a few weeks now. Well, you can blame it on my life (with stuff going on) and partially on Godaddy for not making the transitioning phase from one hosting to another seamless.
This blog is powered by WordPress, and I began with something Godaddy likes to call WordPress Managed Hosting as they claim that these servers have virtually 0 downtimes and are optimised to work with WordPress hosted blogs/websites. The entry barrier is pretty cheap as you start with ₹99/month for any tenure you chose but renewal is ~ ₹500/month whenever it comes. Since I was not sure about future of my blogging habits, I went for the 1-year plan.
Protip: Go for 3~5 year plan if getting WordPress managed hosting for first time as it will be ₹99/month regardless.
I started this blog in January 2015 and went on with it for the full year. As I have had experience with the generic CPanel hosting before, I planned to move to that when this “managed” hosting expires as I didn’t observe much of a difference in the hosting/features provided as I can do most of the stuff (like daily backups, SEO etc) manually as well. January 2016 approached in no time as I was way too occupied at work due to an annual release model of the product I was working @ Adobe. I just paid the renewal fees ~₹6100 for another year which was around 9x more than ~₹700 I paid for the first year of hosting. I promised myself to migrate to the generic CPanel hosting next year (i.e. 2017) as I couldn’t justify the annual cost to keep the lights on @ Bitsnapper.
Another year went by and I approached the expiry deadline for the hosting so I decided to read how I can migrate easily from Managed WordPress hosting to CPanel Linux hosting which was like 1/3rd the cost I was paying. I thought it should be fairly easy as both the hostings are managed by the same provider so I can easily transfer my data across in a click. Duh, I even thought Godaddy might have a utility for the same.
Little did I know this simple process is going to cost a week worth of sleepless nights, I would have continued to paid like it was.
Disclaimer: I know how to migrate a WordPress blog in 2 steps:
- Export the MySQL database, Import it on other installation.
- Copy everything under /public_html from one server to another.
But the problem with steps above is #2, as even if I have a 50mbps downlink, the upload speed is capped to 1mbps. So, just didn’t want to go through that steps as total files were around ~2GB and I wasn’t in a mood to set it up manually. Also, being a computer engineer I like to complicate things so here’s what all I tried:
Trial #1 – Get the promised backup? Duh.
I started reading the documentation and thought since WordPress managed hosting offered daily backups, I can simply use one and be done with it.
NOPE! Those backups are n00b proof and only offers you to select a date and click the big red restore button. Pfft, so much for the ease.
Trial #2 – PLUGINS! They always work!
I tried searching for backup plugs and surely find tonnes of them. These 2 were top rated: UpdraftPlus & XCloner. I read through the docs and found them to allow downloading the backup zip and upload/install on a new WordPress instances to restore all the files + MySQL database.
NOPE! Though I was able to download the whole 1.5 GB of backup, when I bought a parallel CPanel hosting and tried to upload the zip file to that server, it failed around 130 MB. ¯\_(ツ)_/¯
Trial #3 – Copy directly from FTP (Managed WP) to FTP (CPanel Linux)
I was not sure if this was even possible, so I researched about it. I found that XCloner Pro can directly copy files+db over FTP from one hosting to another without even using my localhost machine. It was supposed to be blazing-fast as the transfer would happen over GoDaddy’s server. So, I bought the Pro version and tried the same. I filled in the FTP details of the destination (CPanel Linux hosting) and pressed the big blue “Transfer” button. It started copying, reached 12% and….
NOPE! It failed with Error 500. (KILL ME!) I checked the transferred file size in Filezilla, it was again ~130 MB like in Trail #2. Seems like some restriction on file size. I did check the PHP settings and increase the MAX_FILE_UPLOAD flag to 1 GB but it still failed on me.
Trial #4 – Smartly upload the zip from #2 and extract it via CPanel!
So, I was getting desperate as I didn’t want to lose all the blog posts, comments and custom theme. I decided to investigate the *.zip file which we retrieved in Trial #2 above. I inspected the contents and found out that there was the whole filesystem + an SQL script for the MySQL database. That was some progress.
So, I decided to play by partial rules and started uploading the zip from #2 from my localhost. Once it was done, I tried to extract with via CPanel in /public_html folder so as to duplicate the whole setup. It started extracting but to my expectations…
NOPE! It failed. Again. There was some permission problem due to which /wp-admin couldn’t be extracted in /public_html directory. 🙁
I tried chmod 777 for the directory, but that didn’t help either.
💡 One thing which worked though was restoring the MySQL database.
I directly went to phpMyAdmin and tried to import the SQL script file which we obtained in the zip backup. It worked like a charm and the whole process went smoothly. So, now at least all my posts/comments/optimisations were restored. Now, I still had to do for the core+media files on the file system.
Trail #5 – PROFIT?!
Well, as you can guess by now, I was too tired of this shit. I just tried to be half-smartass and just tried the #4 again by extracting all of the stuff where half of it got extracted to /public_html and half of it failed. Then I just extracted the same zip from #2 on my localhost and bitch-dragged all its content in /public_html in FileZilla. BAM! It started copying stuff, and when it hit it’s first “file conflict”, I just marked it to replace if size is not same else skip button and went to make myself a nice cup of Tea!
VSHOOOOSH! I came back to a god-sent green indicator stating all my files have been copied to the new Linux CPanel hosting! Now all I had to do was, disconnect the domain name from previous hosting’s DNS and hook it up to the new one’s. It took me 5 minutes and 3 rechecks to do that.
I was finally relieved after 6 hours of work and decided to Ctrl+Shift+N (Incognito) it up and hit http://bitsnapper.com and VOILA!
We were finally live! 😛
Note: I am planning to realign some stuff here and get back into blogging seriously! Would really appreciate some tips or suggestions you would want me to implement? Adios.