diff --git a/src/api2/backup.rs b/src/api2/backup.rs index ad13faa5d..aafea8fa2 100644 --- a/src/api2/backup.rs +++ b/src/api2/backup.rs @@ -97,7 +97,7 @@ async move { bail!("backup owner check failed ({} != {})", username, owner); } - let last_backup = BackupInfo::last_backup(&datastore.base_path(), &backup_group).unwrap_or(None); + let last_backup = BackupInfo::last_backup(&datastore.base_path(), &backup_group, true).unwrap_or(None); let backup_dir = BackupDir::new_with_group(backup_group.clone(), backup_time); if let Some(last) = &last_backup { diff --git a/src/backup/backup_info.rs b/src/backup/backup_info.rs index 37dc7aa17..ea917d3c9 100644 --- a/src/backup/backup_info.rs +++ b/src/backup/backup_info.rs @@ -313,9 +313,13 @@ impl BackupInfo { } /// Finds the latest backup inside a backup group - pub fn last_backup(base_path: &Path, group: &BackupGroup) -> Result, Error> { + pub fn last_backup(base_path: &Path, group: &BackupGroup, only_finished: bool) + -> Result, Error> + { let backups = group.list_backups(base_path)?; - Ok(backups.into_iter().max_by_key(|item| item.backup_dir.backup_time())) + Ok(backups.into_iter() + .filter(|item| !only_finished || item.is_finished()) + .max_by_key(|item| item.backup_dir.backup_time())) } pub fn sort_list(list: &mut Vec, ascendending: bool) {