From: <lph...@us...> - 2008-05-16 15:17:34
|
Revision: 12855 http://tikiwiki.svn.sourceforge.net/tikiwiki/?rev=12855&view=rev Author: lphuberdeau Date: 2008-05-16 08:17:18 -0700 (Fri, 16 May 2008) Log Message: ----------- [NEW] Backup MySQL databases Modified Paths: -------------- trim/src/accesslib.php trim/src/instancelib.php Added Paths: ----------- trim/scripts/backup_database.php Added: trim/scripts/backup_database.php =================================================================== --- trim/scripts/backup_database.php (rev 0) +++ trim/scripts/backup_database.php 2008-05-16 15:17:18 UTC (rev 12855) @@ -0,0 +1,23 @@ +<?php + +$root = $_SERVER['argv'][1]; +$outputFile = $_SERVER['argv'][2]; + +include $root . '/db/local.php'; + +$args = array(); +if( $user_tiki ) + $args[] = "-u" . escapeshellarg( $user_tiki ); +if( $pass_tiki ) + $args[] = "-p" . escapeshellarg( $pass_tiki ); +if( $host_tiki ) + $args[] = "-h" . escapeshellarg( $host_tiki ); + +$args[] = $dbs_tiki; + +$args = implode( ' ', $args ); +$command = "mysqldump --extended-insert $args > " . escapeshellarg( $outputFile ); + +exec( $command ); + +?> Modified: trim/src/accesslib.php =================================================================== --- trim/src/accesslib.php 2008-05-16 14:42:20 UTC (rev 12854) +++ trim/src/accesslib.php 2008-05-16 15:17:18 UTC (rev 12855) @@ -241,13 +241,16 @@ function downloadFile( $filename ) // {{{ { + if( $filename{0} != '/' ) + $filename = $this->instance->getWebPath( $filename ); + $dot = strrpos( $filename, '.' ); $ext = substr( $filename, $dot ); $local = tempnam( TEMP_FOLDER, 'trim' ); $host = new SSH_Host( $this->host, $this->user ); - $host->receiveFile( $this->instance->getWebPath( $filename ), $local ); + $host->receiveFile( $filename, $local ); rename( $local, $local . $ext ); chmod( $local . $ext, 0644 ); @@ -268,9 +271,11 @@ function deleteFile( $filename ) // {{{ { - $path = $this->instance->getWebPath( $filename ); - $path = escapeshellarg( $path ); + if( $filename{0} != '/' ) + $filename = $this->instance->getWebPath( $filename ); + $path = escapeshellarg( $filename ); + $host = new SSH_Host( $this->host, $this->user ); $host->runCommands( "rm $path" ); } // }}} Modified: trim/src/instancelib.php =================================================================== --- trim/src/instancelib.php 2008-05-16 14:42:20 UTC (rev 12854) +++ trim/src/instancelib.php 2008-05-16 15:17:18 UTC (rev 12855) @@ -189,6 +189,7 @@ if( ! file_exists( $approot ) ) mkdir( $approot ); + // Bring all remote files locally `rm $approot/manifest.txt`; foreach( $locations as $remote ) { @@ -198,6 +199,16 @@ `echo "$hash $remote" >> $approot/manifest.txt`; } + // Backup database + $randomName = md5( time() . 'trimbackup' ) . '.sql'; + $remoteFile = $this->getWorkPath( $randomName ); + $access->runPHP( dirname(__FILE__) . '/../scripts/backup_database.php', escapeshellarg( $this->webroot ) . ' ' . escapeshellarg( $remoteFile ) ); + $localName = $access->downloadFile( $remoteFile ); + $access->deleteFile( $remoteFile ); + + rename( $localName, $approot . '/database_dump.sql' ); + + // Perform archiving $current = trim( `pwd` ); chdir( BACKUP_FOLDER ); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |