diff --git a/files/backups/backup-all.py b/files/backups/backup-all.py index 62791da..539c7e8 100644 --- a/files/backups/backup-all.py +++ b/files/backups/backup-all.py @@ -438,7 +438,7 @@ class BackupManager: ): self.errors: List[str] = [] self.warnings: List[str] = [] - self.successful_backups: List[str] = [] + self.backed_up_apps: List[str] = [] self.config = config self.storages = storages self.notifiers = notifiers @@ -468,17 +468,33 @@ class BackupManager: for app in applications: app_dir = str(app.path) username = app.owner - logger.info(f"Processing backup for app: {app_dir} (user {username})") + app_name = app.path.name if app.backup_script is None: - warning_msg = ( - f"No backup script found for app: {app_dir} (user {username})" - ) - logger.warning(warning_msg) - self.warnings.append(warning_msg) + if app.backup_targets: + # Приложение без дампа: restic забирает его данные как есть, + # отдельный шаг архивации ему не нужен. + logger.info( + f"No backup script for app: {app_dir} (user {username}), " + f"data directories go to restic as is" + ) + self.backed_up_apps.append(app_name) + else: + warning_msg = ( + f"Nothing to back up for app: {app_dir} (user {username}): " + f"no backup script and no backup targets" + ) + logger.warning(warning_msg) + self.warnings.append(warning_msg) continue - self._run_app_backup(str(app.backup_script), app_dir, username) + logger.info(f"Processing backup for app: {app_dir} (user {username})") + if not self._run_app_backup(str(app.backup_script), app_dir, username): + continue + # Дамп сделан, но в restic он попадёт только если есть цели бекапа; + # об их отсутствии уже предупредил ApplicationFinder. + if app.backup_targets: + self.backed_up_apps.append(app_name) else: logger.info("Backup phase not active, skipping per-app archive scripts") self.archive_duration = time.monotonic() - archive_start @@ -567,7 +583,6 @@ class BackupManager: if result.returncode == 0: logger.info(f"Backup script for {username} completed successfully") - self.successful_backups.append(username) return True else: error_msg = f"Backup script {script_path} failed with return code {result.returncode}" @@ -597,15 +612,15 @@ class BackupManager: if success and not self.errors: title = f"{host}: бекап успешно завершен" message = f"
{host}: бекап успешно завершен!
" - if self.successful_backups: - items = "".join(f"Успешные бекапы:
{host}: бекап завершен с ошибками!
" - if self.successful_backups: - items = "".join(f"✅ Успешные бекапы: