diff --git a/server/lib/classes/backup.inc.php b/server/lib/classes/backup.inc.php index 485bd996d3b2059401e61dc1a1360d71a69f0b81..5b01b237608f485baa435e3f76a4ab22bf5160df 100644 --- a/server/lib/classes/backup.inc.php +++ b/server/lib/classes/backup.inc.php @@ -691,11 +691,11 @@ class backup * @see backup_plugin::mount_backup_dir() * @author Ramil Valitov */ - protected static function clearBackups($server_id, $web_id, $max_backup_copies, $backup_dir) + protected static function clearBackups($server_id, $web_id, $max_backup_copies, $backup_dir, $prefix_list=null) { global $app; - $files = self::get_files($backup_dir); + $files = self::get_files($backup_dir, $prefix_list); usort($files, function ($a, $b) use ($backup_dir) { $time_a = filemtime($backup_dir . '/' . $a); $time_b = filemtime($backup_dir . '/' . $b); @@ -1214,7 +1214,11 @@ class backup //* Remove old backups self::backups_garbage_collection($server_id, 'mysql', $domain_id); - self::clearBackups($server_id, $domain_id, intval($rec['backup_copies']), $db_backup_dir); + $prefix_list = array( + 'db_'.escapeshellarg($db_name).'_', + 'manual-db_'.escapeshellarg($db_name).'_', + ); + self::clearBackups($server_id, $domain_id, intval($rec['backup_copies']), $db_backup_dir, $prefix_list); } else { $app->log('Failed to process mysql backup format ' . $backup_format_db . ' for database ' . $rec['database_name'], LOGLEVEL_ERROR); } @@ -1285,7 +1289,13 @@ class backup self::prepare_backup_dir($server_id, $web_domain); $web_backup_dir = $backup_dir . '/web' . $web_id; - $backup_excludes = array(escapeshellarg('./backup\*')); + # default exclusions + $backup_excludes = array( + escapeshellarg('./backup\*'), + './bin', './dev', './etc', './lib', './lib32', './lib64', './opt', './sys', './usr', './var', './proc', './run', './tmp', + './log', + ); + $b_excludes = explode(',', trim($web_domain['backup_excludes'])); if (is_array($b_excludes) && !empty($b_excludes)) { foreach ($b_excludes as $b_exclude) { @@ -1324,7 +1334,11 @@ class backup $app->log('Backup of web files for domain ' . $web_domain['domain'] . ' failed using path ' . $web_path . ' failed.', LOGLEVEL_ERROR); } - self::clearBackups($server_id, $web_id, intval($web_domain['backup_copies']), $web_backup_dir); + $prefix_list = array( + 'web', + 'manual-web', + ); + self::clearBackups($server_id, $web_id, intval($web_domain['backup_copies']), $web_backup_dir, $prefix_list); return true; }