WordPress Backup Plugin (BackWPup) – Highly Recommended

backWPupFor anyone running a WordPress site, having a database backup is a very nice thing to have.  This can be achieved through several different plugins, including one reviewed here previously — Better WordPress Security, now known as iThemes Security.  I’ve also written previously about using a shell script to for database backups, especially on 1and1.com.

But what about the physical files and content directories?  Those usually require an FTP account or more. I was recently shown BackWPup, which backups not only database files, but also your entire content directory.  It does it extremely well, and with many important options in the free version.  (The paid version offers more options and controls, but for most people, the free version alone will work just fine.)

For the non-techie crowd out there, it’s interface may seem a bit daunting at first perhaps, but it’s worth learning to use.  I’ll try to outline some settings we suggest you use, too.

Let’s Go Step By Step

  1. Go to the “Add New” link under plugins.
  2. Do a search for “BackWPup” and you should easily find the plug for safe installation via the WordPress admin.
  3. Install and activate the plugin.
  4. Once you’ve got it activated, you’ll have a couple of new menu options – one at the top of your admin page, the other in the admin below your “Settings” options.  (There may be other items in between depending on what else you’ve added — we have iTheme’s Security in our left navigation panel.)  Click the Settings option under BackWPup.
  5. You’ll now have a screen with tabs for General, Jobs, Logs, Network, API Keys, Information.
    • Let’s start with General. The default setup is probably fine for everyone with checks next to “Show BackWPup links in admin bar” and “Protect BackWPup folders with .htaccess and index.php”.
    • Jobs – Again, the default setup is probably fine, but I would recommend a couple of changes.  First, click the checkbox for “No translation.”  Next, given you are most likely on a shared server for your hosting, it’s more than polite to select one of the options for “Reduce server load.”  I set mine to “medium.”
    • Logs – If you have the ability of creating a directory above the root web level, it makes sense to put the logs there and not within the web accessible levels of your site.  If you can do this, change the path to the log file folder to this “upper” level.  I also only keep 3 to 5 log files in my folders.  I also recommend selecting the checkbox for “Compression.”
    • Network and API Keys are not likely items you’ll need to touch.
    • The Information tab can provide you with some details if you are having any problems with this plugin out of the box. (I’ve never needed it.)That covers the “Settings” option.  Let’s move to creating a “Job” now. 
  6. job-viewClick the “Add new job” option in the left nav.  This is where you’ll be doing the most amount of setup.  We have five tabs showing by default, but we will soon have a sixth.  I’ll explain as we go.  Let’s take this tab by tab, too.
    • General – First off, let’s give the job a name.  I also check the “Check database tables” checkbox but leave unchecked the “WordPress XML export.”    You’ll see another tab at the top now for “DB Check.”Under the Backup File Creation section, prepend the archive name with your site’s name perhaps.  If you are like me, you may have multiple sites backed up to the same backup directory above the web level.Now it is important to pick the right Job Destination.  I don’t want large files emailed to me, nor put to DropBox, FTP, etc.  Just store this bugger in a folder that is above the root level for the web server if possible.  Click the checkbox for “Backup to Folder” and when you do, yet another tab will be visible at the top of the section.Valdate the email addresses in the Log Files section are correct and click Save Changes.schedule
    • Schedule – I prefer to have the backup run nightly.  I select the option “with WordPress cron.” When selected, you can edit the default 3am time if you desire.
    • DB Backup – Leave things as they are here, but you may also want to select Gzip under “Backup file compression.”  I do.
    • Files – By default, the program doesn’t backup its own plugin folder.  If you are backing things up to a directory above the web root, you can deselect the checkbox for “backwpup” in the “Backup plugins” section.  I also select the option of excluding thumbnails and .tmp, .DS_Store files etc.  Leave selected the “Include special files” checkbox.
    • Plugins – I compress mine with Gzip.  There’s no use leaving the backup large in my view.

    repair-db

    • DB Check– I check the checkbox for “Try to repair defect table” as this is a safe thing to do and may save you some pain.
    • To: Folder – Because we are saving things to a folder, it’s important to select the destination and the number of backups to save.  Again, I put my backups above the web root level.  If you can do that, it’s more secure.  If not, the plugin does a good job of randomizing and providing a security through obscurity model.  I don’t keep 15 copies of my site though – only 3 to 5 depending on the size.Now to move on to running our first backup.
  7. Click “Jobs” under the Dashboard tab.  You should see a screen with the job you just created listed on it.
  8. Mouse over the name of the job and you’ll see options including a link to “Run Now” – click that!

  9. If you’ve configured things correctly, you’re backup will run and show you the progress along the way.  The Gzip process may take some time depending on the size of your site and files.  Note also that if you did as I suggested above and minimized the impact to the server resources, it will take longer to run, too.  My backups tend to take a minute to as much as 4 minutes to run for a very large site with many files.

That’s all you should need to do to safely backup your database and your content for your WordPress site.  Hat’s off to the developers at BackWPup for their excellent work!

In a future post, I’ll show how to take a backup file and either restore a site, or use it to move to a new host.