Joomla backups made easy
This post sums up the backup strategy I’m using for the website of my next project RowMotion. RowMotion is hosted on a Joomla installation. My hoster is nice enough to provide a decent pre-built mysqldump based backup script, which can be found here. Did I mention it does email notifications too? All the necessary instructions to set it up are mentioned there too.
Okay, so now we have a nice backup script for our Joomla database that needs to be triggered and the resulting backup file downloaded? Since the web-request needs to be authenticated, I figured it would be easiest to use some PowerShell magic to leverage the .NET WebClient. Here’s the full script:
$username = "un" $password = "pw" $backupDir = "C:\backup\" $web_client = New-Object System.Net.WebClient; $web_client.Credentials = new-object System.Net.NetworkCredential($username, $password) $response = $web_client.DownloadString("http://yourDomain.com/backup/databaseBackup.phpx"); echo "Response:\n" echo $response $regex = "http://yourDomain.com.com/backup/.*?.gz"; $response -match $regex $dumpUrl = $matches echo "URL:\n" echo $dumpUrl $fn = [System.IO.Path]::GetFileName($dumpUrl); echo "Filename:\n" echo $fn $target = [System.IO.Path]::Combine($backupDir, $fn); echo "Target:\n" echo $target $web_client.DownloadFile($dumpUrl, $target);
Sure enough, this is neither pretty nor the most robust, but it’s the simplest thing that could possibly work (and it does). Next, we need to schedule this task with the Windows Task Scheduler. I’m running this on my server together with all the other backup tasks.
Be sure to enter “powershell” as the command and “-noprofile -command “C:\backupJobs\yourps.ps1” “as the argument.