From f13ad3d7bec9c44e93c894896451046ff0df1bed Mon Sep 17 00:00:00 2001 From: Johannes Koschier Date: Sun, 7 May 2023 18:12:26 +0000 Subject: [PATCH] 6467_clear_backup_fix - test --- server/lib/classes/backup.inc.php | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/server/lib/classes/backup.inc.php b/server/lib/classes/backup.inc.php index 57f264ec44..e9059f5f84 100644 --- a/server/lib/classes/backup.inc.php +++ b/server/lib/classes/backup.inc.php @@ -1149,7 +1149,7 @@ class backup @unlink($full_filename); } } elseif (self::backupModeIsRepos($backup_mode)) { - $repos_archives = self::getAllArchives($backup_dir, $backup_mode, $password); + $repos_archives = self::getAllArchives($backup_dir, $backup_mode, $password, $prefix_list); usort($repos_archives, function ($a, $b) { return ($a['created_at'] > $b['created_at']) ? -1 : 1; }); @@ -1168,8 +1168,11 @@ class backup return true; } - protected static function getAllArchives($backup_dir, $backup_mode, $password) - { + protected static function getAllArchives($backup_dir, $backup_mode, $password, $prefix_list = null) { + if (is_null($prefix_list)) { + global $app; + $app->log("prefix_list is null - [backupdir = $backup_dir, backupmode = $backup_mode ]", LOGLEVEL_ERROR); + } $d = dir($backup_dir); $archives = []; /** @@ -1189,11 +1192,15 @@ class backup if (is_dir($repos_path) && strncmp('borg_', $entry, 5) === 0) { $archivesJson = json_decode(implode("", self::getReposArchives($backup_mode, $repos_path, $password, 'json')), TRUE); foreach ($archivesJson['archives'] as $archive) { - $archives[] = [ - 'repos' => $entry, - 'archive' => $archive['name'], - 'created_at' => strtotime($archive['time']), - ]; + foreach ($prefix_list as $prefix) { + if (substr($archive['name'], 0, strlen($prefix)) == $prefix) { //filter backup list based on prefix_list (db or web) + $archives[] = [ + 'repos' => $entry, + 'archive' => $archive['name'], + 'created_at' => strtotime($archive['time']), + ]; + } + } } } break; -- GitLab