WireDatabaseBackup class

ProcessWire Database Backup and Restore

// Get an instance of WireDatabaseBackup
$backup = $database->backups();

This class intentionally does not have any external dependencies (other than PDO)so that it can be included by outside tools for restoring/exporting, with the main example of that being the ProcessWire installer.

The recommended way to access these backup methods is via the $database API variable method $database->backups(), which returns a WireDatabaseBackup instance, however you can also initialize the class manually if you prefer, like this:

// determine where backups will go (should NOT be web accessible)
$backupPath = $config->paths->assets . 'backups/';

// create a new WireDatabaseBackup instance
$backup = new WireDatabaseBackup($backupPath);

// Option 1: set the already-connected DB connection
$backup->setDatabase($this->database);

// Option 2: OR provide a Config object that contains the DB connection info
$backup->setDatabaseConfig($this->config);

Backup the database

$file = $backup->backup();
if($file) {
  echo "Backed up to: $file";
} else {
  echo "Backup failed: " . implode("<br>", $backup->errors());
}

Restore a database

$success = $backup->restore($file);
if($success) {
  echo "Restored database from file: $file";
} else {
  echo "Restore failed: " . implode("<br>", $backup->errors());
}

Click any linked item for full usage details and examples. Hookable methods are indicated with the icon.

Show $var?             Show args?        

Initialization

It’s not typically necessary to call these initialization methods unless doing manual initialization.

Advanced

NameReturnSummary 
$backup->getDatabase()
null \PDO WireDatabasePDOGet current database connection, initiating the connection if not yet active 
$backup->restoreMerge(string $filename1, string $filename2, array $options)
boolRestore from 2 SQL files while resolving table differences (think of it as array_merge for a DB restore) 

Common

NameReturnSummary 
$backup->dropAllTables()
intDrop all tables from database 

API reference based on ProcessWire core version 3.0.130

Twitter updates

  • New post: Quietly and without interruption this week, the ProcessWire.com website (and all subdomains) moved from a single static server to a load-balanced multi-server environment, giving us even more horsepower and redundancy than before— More
    19 April 2019
  • New post: With ProcessWire 3.0.130, this week we’ll take a detailed look at a few useful new API additions made in the last few weeks, along with examples of each—More
    12 April 2019
  • New post: This week ProcessWire ProMailer has been released, plus we’ve got a nice upgrade in our community support forum, and more— More
    15 March 2019

Newest forum posts

Latest news

  • ProcessWire Weekly #258
    In the 258th issue of ProcessWire Weekly we'll cover a hosting upgrade for the processwire.com site and it's subdomains, introduce PW Review and Terminal module, and feature the new site of O'Neil Cinema. Read on!
    Weekly.pw / 20 April 2019
  • ProcessWire.com website hosting upgrades
    Quietly and without interruption this week, our whole website moved from a single static server to a load-balanced multi-server environment, giving us even more horsepower and redundancy than before.
    Blog / 19 April 2019
  • Subscribe to weekly ProcessWire news

“…building with ProcessWire was a breeze, I really love all the flexibility the system provides. I can’t imagine using any other CMS in the future.” —Thomas Aull