#!/usr/bin/env python3 """ 💾 Automated Backup Setup Erstellt tägliche automatische Backups via Windows Task Scheduler """ import os import shutil from datetime import datetime import subprocess BACKUP_DIR = "backups" DB_PATH = "trading_bot.db" SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__)) # ========================================== # BACKUP SCRIPT # ========================================== def create_daily_backup(): """Erstellt tägliches Backup mit Rotation""" if not os.path.exists(BACKUP_DIR): os.makedirs(BACKUP_DIR) # Create backup timestamp = datetime.now().strftime('%Y%m%d') backup_path = f"{BACKUP_DIR}/trading_bot_daily_{timestamp}.db" shutil.copy(DB_PATH, backup_path) print(f"✅ Backup erstellt: {backup_path}") # Cleanup old backups (keep last 7 days) cleanup_old_backups(7) def cleanup_old_backups(keep_days=7): """Löscht Backups älter als X Tage""" if not os.path.exists(BACKUP_DIR): return backups = [f for f in os.listdir(BACKUP_DIR) if f.startswith("trading_bot_daily_")] backups.sort(reverse=True) # Neueste zuerst # Keep only last N backups to_delete = backups[keep_days:] for backup in to_delete: backup_path = os.path.join(BACKUP_DIR, backup) os.remove(backup_path) print(f"🗑️ Gelöscht: {backup}") print(f"💾 Behalten: {min(len(backups), keep_days)} Backups") # ========================================== # WINDOWS TASK SCHEDULER SETUP # ========================================== def create_backup_bat(): """Erstellt .bat Datei für Task Scheduler""" bat_content = f"""@echo off REM Daily Database Backup cd /d "{SCRIPT_DIR}" python setup_automated_backup.py --run """ bat_path = os.path.join(SCRIPT_DIR, "daily_backup.bat") with open(bat_path, 'w') as f: f.write(bat_content) print(f"✅ Backup Script erstellt: {bat_path}") return bat_path def create_task_scheduler_command(bat_path): """Erstellt Windows Task Scheduler Befehl""" task_name = "TradingBotDailyBackup" # schtasks command cmd = f"""schtasks /Create /TN "{task_name}" /TR "{bat_path}" /SC DAILY /ST 00:00 /F""" print("\n" + "="*80) print("📋 WINDOWS TASK SCHEDULER SETUP") print("="*80) print("\nFührenden Sie folgenden Befehl in CMD (als Administrator) aus:") print() print(cmd) print() print("Oder manuell:") print("1. Windows-Taste + R") print("2. taskschd.msc eingeben") print("3. 'Aufgabe erstellen'") print(f"4. Name: {task_name}") print("5. Trigger: Täglich um 00:00") print(f"6. Aktion: {bat_path}") print() # Try to create automatically try: result = subprocess.run(cmd, shell=True, capture_output=True, text=True) if result.returncode == 0: print("✅ Task Scheduler automatisch erstellt!") else: print(f"⚠️ Automatische Erstellung fehlgeschlagen: {result.stderr}") print("Bitte manuell erstellen (siehe oben)") except Exception as e: print(f"⚠️ Konnte nicht automatisch erstellen: {e}") print("Bitte manuell erstellen (siehe oben)") # ========================================== # PYTHON SCHEDULER (Alternative) # ========================================== def setup_python_scheduler(): """Info für Python-basierte Scheduler Alternative""" print("\n" + "="*80) print("🐍 ALTERNATIVE: Python Scheduler") print("="*80) print("\nFalls Windows Task Scheduler nicht funktioniert:") print() print("pip install schedule") print() print("Dann in Ihrem trading_bot Notebook/Script:") print(""" import schedule import time from setup_automated_backup import create_daily_backup # Schedule backup daily at midnight schedule.every().day.at("00:00").do(create_daily_backup) # In Scheduler-Loop (läuft bereits): while True: schedule.run_pending() time.sleep(60) """) # ========================================== # MAIN # ========================================== def main(): import sys print("="*80) print("💾 AUTOMATED BACKUP SETUP") print("="*80) print() # Check if --run flag (called by task scheduler) if "--run" in sys.argv: print("🔄 Running scheduled backup...") create_daily_backup() return # Setup mode print("Optionen:") print() print("1️⃣ Windows Task Scheduler Setup (Empfohlen)") print("2️⃣ Python Scheduler Info") print("3️⃣ Manuelles Backup JETZT ausführen") print("4️⃣ Backup-Verzeichnis aufräumen") print() choice = input("Ihre Wahl (1-4): ").strip() if choice == "1": bat_path = create_backup_bat() create_task_scheduler_command(bat_path) elif choice == "2": setup_python_scheduler() elif choice == "3": print("\n🔄 Erstelle Backup...") create_daily_backup() elif choice == "4": days = input("Wie viele Tage behalten? (Standard: 7): ").strip() days = int(days) if days else 7 cleanup_old_backups(days) else: print(f"❌ Ungültige Wahl: {choice}") print("\n✅ Fertig!") if __name__ == "__main__": main()