Precision Pages Blog

Move Your Drupal Business Website Without Drama - Part 2

Move your Drupal website with FTPIn Part 1, we prepared for a Drupal website move by confirming access to registrar and DNS accounts, installing the Backup and Migrate module and creating a backup of the site database. In Part 2 we'll work with FTP to create a local copy of your website files, and back those files up.

Step 4. Download Your Website Files 

Thanks to the Backup and Migrate module, you already have a copy of your Drupal website database. The database contains most of the text and configuration for your website. But that's only half of what you need to move your site. Depending on your version of Drupal, you have 500-1200 files in your root directory, requiring 3MB - 11MB of space, that you must safely move to the new webserver. Additionally, you must account for any custom modules, uploaded files or theme customizations you have made. While this might sound like a monumental task, you can move these easily with a few tools: a high speed internet connection, and an FTP client.

Unless someone else installed your Drupal site, you are probably already familiar with FTP. For the uninitiated, File Transfer Protocol (FTP) is a way to move files from one location to another on the internet. Programs that utilize FTP are referred to as FTP clients. It's one of the most common ways to update websites and requires little specialized knowledge. The best FTP client is one you're comfortable with. If you already know how to use a particular FTP client, stick with it.

If you don't have one, consider these open source (free) FTP clients:

If you use Dreamweaver to edit HTML, it also has a very good FTP client built in. This offers the added advantage of having the FTP client integrated with your HTML editor.

If you've never used FTP, try practicing with a test hosting account. Your live site is not the best place to learn how things work. On a practice account, try moving a simple webpage from your local computer to the web. Try making a change locally and then pushing that change up to the web. Pay close attention to how to identify local files vs. remote files. Experiment with the different views of local and remote files. Try deleting a local file. Be sure you understand the difference between deleting something locally and deleting something on the remote server. This is critical; you don't want to accidentally delete files from your webserver. Get comfortable with how to pull and push files. Be sure you know the difference.

Once you are up to speed with your FTP client, it's time to copy the entire remote Drupal website to a local folder on your computer. An easy way to keep things straight is to create a "websites" folder on your C drive. This makes it easy to find at C:\websites\. Under \websites\, create a folder for each website you work with. You might name it something descriptive, such as C:\websites\mysite.com.host-abc\, where "host-abc" refers to the current hosting provider for your website.

Because Drupal websites look very similar from a code standpoint, refer to the screen shot to make sure you're in the right location before you start copying files. Use your FTP client and connect to your webserver. You should see folder names like includes, misc, modules, profiles, scripts, sites, themes. You need all of these folders, along with the files in the root directory such as cron.php, index.php, install.php, and so on.

drupal files to look for when moving your site

If things look different, you might not have the correct host directory selected. It should probably end in /html or /htdocs. If you are unsure, contact your current hosting provider. Once you are confident you are looking at the correct directory on the remote server, it's best to copy everything to your local computer. Select all the files and folders and download them. Note: when using FTP, you aren't moving the files, you're just copying them. In other words, your website should continue to work properly because you are not removing anything it needs to do its job. Depending on the speed of your connection, this step will probably take 10-45 minutes. When the FTP job is complete, make sure there are no error messages from the FTP client indicating a problem copying files. At this point, all the files and folders of your live Drupal website should have been copied into your C:\websites\mysite.com.host-abc\ folder. This collection of folders and files that powers a website is frequently referred to as a "code base".

Browse to C:\websites\ on your local computer and view the properties of the \mysite.com.host-abc\ folder. Make sure the number of files passes the common sense test. If you have a Drupal 6 website, you should have more than 500 files in this directory. Drupal 7 is over twice as large. If you only have a few hundred files, something went wrong with your FTP job and you do not have the entire website. Check your FTP error log.

Step 5. Make a Backup of Your Website

Now that you have a backup of your Drupal database and a backup of your Drupal code base on your local computer, back them up again. Go to the C:\websites\ folder. Click once on "mysite.com.host-abc" to select it. Hit ctrl c to copy it, and ctrl v to paste it. This will result in the creation of an additional directory under C:\websites\ named something like "copy of mysite.com.host-abc". You can rename this to make more sense to you (something like mysite.com.host-abc-backup), or leave it as is. Leave the copy alone in case you need to come back to it.

back up codebase 

Do the same with your database backup. Find the file you downloaded (typically named something like mysite-2013-01-15.mysql) using Backup and Migrate and create a backup copy the same way you backed up your code base above.

You are now at a point where you have a copy of all files and folders that power your website (your code base) on your local hard drive. You also have a .sql file of your website's database. And you have created backups of these files locally in case you ever need them.

In Part 3 we will move these files to a new web server and test them without affecting your live site.