return True else: self.logger.error(f"Physical backup failed for {container_name}: {result.stderr}") return False except Exception as e: self.logger.error(f"Error executing physical backup for {container_name}: {e}") return False def execute_logical_backup(self, container_name, network): """Выполнение логического бэкапа""" try: cmd = [ '/opt/backup-manager/scripts/logical-backup.sh', container_name, network ] result = subprocess.run(cmd, capture_output=True, text=True) if result.returncode == 0: self.logger.info(f"Logical backup successful for {container_name}") return True else: self.logger.error(f"Logical backup failed for {container_name}: {result.stderr}") return False except Exception as e: self.logger.error(f"Error executing logical backup for {container_name}: {e}") return False def run_scheduled_backup(self, backup_type='all'): """Запуск запланированного бэкапа""" containers = self.discover_postgres_containers() results = { 'timestamp': datetime.now().isoformat(), 'total_c