We were recently asked to migrate a store to our Sonassi Hosting platform, but the client did not have SSH access to his previous hosting account.
So we quickly knocked up a script to take care of the backup process
<?php
$xml = simplexml_load_file("app/etc/local.xml");
$db_host = (string)$xml->global->resources->default_setup->connection->host;
$db_name = (string)$xml->global->resources->default_setup->connection->dbname;
$db_username = (string)$xml->global->resources->default_setup->connection->username;
$db_password = (string)$xml->global->resources->default_setup->connection->password;
$mysqldump = trim(shell_exec("which mysqldump"));
$tar = trim(shell_exec("which tar"));
// Backup database
var_dump(shell_exec("$mysqldump -h $db_host -u $db_username -p$db_password $db_name > migration_db.sql"));
// Backup entire site
var_dump(shell_exec("$tar cfz migration_www.tgz .
--exclude=var/session
--exclude=var/cache
--exclude=var/report
--exclude=var/backups
--exclude=var/log
--exclude=media
--exclude=*.tgz
--exclude=*.gz
--exclude=*.tar
--exclude=*.zip
"));
// Grab non-compressible data
var_dump(shell_exec("$tar cf migration_misc.tar media *.tgz *.gz *.tar *.zip --exclude=migration_misc.tar"));
We carried out the restoration via SSH, but you could also have a PHP script take care of that too:
<?php
$db_host = "";
$db_name = "";
$db_username = "";
$db_password = "";
$current_domain = "";
$mysql = trim(shell_exec("which mysql"));
$tar = trim(shell_exec("which tar"));
$wget = trim(shell_exec("which wget"));
// Grab current site
shell_exec("$wget $current_domain/migration_www.tgz");
shell_exec("$wget $current_domain/migration_misc.tar");
// Restore entire site
shell_exec("$tar xfz migration_www.tar.gz .");
shell_exec("$tar xf migration_misc.tar .");
// Restore database
shell_exec("$mysql -h $db_host -u $db_username -p$db_password $db_name < migration_db.sql");
$xml = simplexml_load_file("app/etc/local.xml");
$xml->global->resources->default_setup->connection->host = $db_host;
$xml->global->resources->default_setup->connection->dbname = $db_name;
$xml->global->resources->default_setup->connection->username = $db_username;
$xml->global->resources->default_setup->connection->password = $db_password;
$xml->asXML("app/etc/local.xml");
@unlink($_SERVER['DOCUMENT_ROOT']."app/etc/use_cache.ser");
@unlink($_SERVER['DOCUMENT_ROOT']."downloader/pear/pear.ini");
Pingback: Magento: Migrate from Remote Host to Localhost - Successfulwebshop.comFree tips to make your Magento and OpenCart webshop more successful