X-Git-Url: http://git.roojs.org/?p=Pman.Admin;a=blobdiff_plain;f=Dump.php;h=4102bc16c3c16f0e8ab41a61d09c687177b31cb1;hp=27323ea6c675532bc619fcb8a43b56c8a153909e;hb=HEAD;hpb=9e6999916749cd05c1524c22dca34a35683a4175 diff --git a/Dump.php b/Dump.php index 27323ea..4102bc1 100644 --- a/Dump.php +++ b/Dump.php @@ -50,6 +50,9 @@ require_once 'Pman.php'; class Pman_Admin_Dump extends Pman { + static $cli_desc = "Dump database ?/ needs more info..."; + + function getAuth() { @@ -62,7 +65,7 @@ class Pman_Admin_Dump extends Pman { var $deps = array(); // list of dependants var $out = array(); // list of created sql/shell scripts. - function get($path ) + function get($path, $opts = Array() ) { ini_set('memory_limit', '256M'); // we need alot of memory set_time_limit(0); @@ -71,7 +74,7 @@ class Pman_Admin_Dump extends Pman { array_shift($argv); array_shift($argv); - $opts = explode(',', 'table==,where==,dump-dir==,dump-dir==,debug='); + $opts = explode(',', 'table==,where==,dump-dir==,debug='); require_once 'Console/Getopt.php'; $go = Console_Getopt::getopt2($argv, '', $opts ); if (is_object($go)) { @@ -125,7 +128,7 @@ class Pman_Admin_Dump extends Pman { echo " " .$tbl . ' -> ' . count(array_keys($ar)) . " Records\n"; } echo "FILES:\n"; - echo " Total : " . count($this->childfiles) . " using " . floor($this->filesize/1000000) . "Mb\n"; + echo " Total : " . $this->filetotal . " files using " . floor($this->filesize/1000000) . "Mb\n"; echo "GENERATED FILES:\n"; // summary @@ -144,6 +147,7 @@ class Pman_Admin_Dump extends Pman { var $childfiles = array(); // array of [ 'sourcedirectory' , 'subdirectory(s) and filename' ] var $childthumbs = array(); // array of [ 'filename', 'filename' ,......] var $filesize = 0; // size of files to be saved. (not total deletd..) + var $filetotal = 0; // number of distinct files to be saved (not total deleted) /** * scan table for * a) what depends on it (eg. child elements) - which will be deleted. @@ -412,27 +416,35 @@ class Pman_Admin_Dump extends Pman { $this->out[] = $target; $fh3 = fopen($target, 'w'); - $fs = 0; + $done = array(); + $donedir = array(); foreach($this->childfiles as $v) { - $source = $v[0].'/'.$v[1]; - if (isset($done[$source)) { + + if (isset($done[$v[1]])) { continue; } - $fs += filesize($v[0].'/'.$v[1]); - fwrite($fh,"mkdir -p " . escapeshellarg(dirname($this->args['dump-dir'] .'/'.$v[1])) ."\n" ); + $done[$v[1]] = true; + + $this->filesize += filesize($v[0].'/'.$v[1]); + $this->filetotal++; + $fdir = dirname($this->args['dump-dir'] .'/'.$v[1]); + if (!isset($donedir[$fdir])) { + fwrite($fh,"mkdir -p " . escapeshellarg(dirname($this->args['dump-dir'] .'/'.$v[1])) ."\n" ); + } fwrite($fh,"cp " . escapeshellarg($v[0].'/'.$v[1]) . ' ' . escapeshellarg($this->args['dump-dir'] .'/'.$v[1]) ."\n" ); + if (!isset($donedir[$fdir])) { + fwrite($fh3,"mkdir -p " . escapeshellarg(dirname($v[0].'/'.$v[1])) ."\n" ); + } + $donedir[$fdir] = true; - fwrite($fh3,"mkdir -p " . escapeshellarg(dirname($v[0].'/'.$v[1])) ."\n" ); fwrite($fh3,"cp " . escapeshellarg($this->args['dump-dir'] .'/'.$v[1]) . ' ' . escapeshellarg($v[0].'/'.$v[1]) . "\n" ); - fwrite($fh2,"rm " . escapeshellarg($v[0].'/'.$v[1]) ."\n" ); } fclose($fh); fclose($fh3); // restore does not need to bother with thumbnails. - - $this->filesize = $fs; + foreach($this->childthumbs as $v) {