From 2490d6457aac50dcf9eb699f28ac8e4a35cb6ef2 Mon Sep 17 00:00:00 2001 From: Andrew H Date: Thu, 31 Dec 2015 02:11:21 +0000 Subject: [PATCH] Add 7zip compression level param to BackupDumper Adds a --7ziplevel param to dumpBackup.php and dumpTextPass.php, used when an --output of type '7zip' is specified. Bug: T78669 Change-Id: I9ee8169daf30b4d8251c7a344b593c29c81eb799 --- includes/export/Dump7ZipOutput.php | 13 +++++++++++-- maintenance/backup.inc | 8 +++++++- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/includes/export/Dump7ZipOutput.php b/includes/export/Dump7ZipOutput.php index c299166ab9..31c945c05e 100644 --- a/includes/export/Dump7ZipOutput.php +++ b/includes/export/Dump7ZipOutput.php @@ -27,10 +27,17 @@ * @ingroup Dump */ class Dump7ZipOutput extends DumpPipeOutput { + /** + * @var int + */ + protected $compressionLevel; + /** * @param string $file + * @param int $cmpLevel Compression level passed to 7za command's -mx */ - function __construct( $file ) { + function __construct( $file, $cmpLevel = 4 ) { + $this->compressionLevel = $cmpLevel; $command = $this->setup7zCommand( $file ); parent::__construct( $command ); $this->filename = $file; @@ -41,7 +48,9 @@ class Dump7ZipOutput extends DumpPipeOutput { * @return string */ function setup7zCommand( $file ) { - $command = "7za a -bd -si -mx=4 " . wfEscapeShellArg( $file ); + $command = "7za a -bd -si -mx="; + $command .= wfEscapeShellArg( $this->compressionLevel ) . ' '; + $command .= wfEscapeShellArg( $file ); // Suppress annoying useless crap from p7zip // Unfortunately this could suppress real error messages too $command .= ' >' . wfGetNull() . ' 2>&1'; diff --git a/maintenance/backup.inc b/maintenance/backup.inc index ec59c601c9..9af96043c9 100644 --- a/maintenance/backup.inc +++ b/maintenance/backup.inc @@ -99,6 +99,8 @@ class BackupDumper extends Maintenance { $this->addOption( 'report', 'Report position and speed after every n pages processed. ' . 'Default: 100.', false, true ); $this->addOption( 'server', 'Force reading from MySQL server', false, true ); + $this->addOption( '7ziplevel', '7zip compression level for all 7zip outputs. Used for ' . + '-mx option to 7za command.', false, true ); if ( $args ) { // Args should be loaded and processed so that dump() can be called directly @@ -182,7 +184,11 @@ class BackupDumper extends Maintenance { $this->fatalError( "Unrecognized output sink type '$type'" ); } $class = $this->outputTypes[$type]; - $sink = new $class( $file ); + if ( $type === "7zip" ) { + $sink = new $class( $file, intval( $this->getOption( '7ziplevel' ) ) ); + } else { + $sink = new $class( $file ); + } break; case 'filter': -- 2.20.1