Baz00k@
Ikona Backuper QT
Systém / vývoj

Backuper QT

0.1.0.1

grafická a dávková nástroj pro bezpečné zálohování repozitáře (folder/zip). Podpora .gitignore excludes, logy.

Co projekt řeší

grafická a dávková nástroj pro bezpečné zálohování repozitáře (folder/zip). Podpora .gitignore excludes, logy.

Typické použití

  • VÝVOJÁŘ - ZÁLOHOVÁNÍ PŘED RIZIKOVÝM REFACTORINGEM

Jak aplikace funguje a k čemu slouží

Přehled aplikace

Backuper QT je specializovaný, uživatelsky přívětivý nástroj pro vytváření datovaných záloh celých složek a Git repozitářů. Aplikace řeší typický problém vývojářů a správců systémů — potřebu rychle a bezpečně zálohovat projekt před kritickou změnou, aniž by zálohy zaplnily disk díky vestavěné inteligentní rotaci starých kopií.

Primární účely

  • Snapshotting Git repozitářů a projektů s automatickým čištěním historie záloh
  • Selektivní záloha s pokročilým filtrováním (exclude patterns, kategorizace)
  • Asynchronní operace bez blokování UI (úloha na pozadí)
  • Volitelná ZIP komprese s nastavitelnou úrovní (0–9)
  • Automatická rotace — FIFO smazání nejstarších záloh, uchování N posledních

Hlavní výhody

  • Bezpečnost dat: Zálohy jsou atomické, s zachováním metadat souborů (časy, oprávnění)
  • Efektivita místa: ZIP64 komprese pro soubory >4 GB, volitelná archivace
  • Uživatelská přívětivost: Intuitivní grafické rozhraní s drag & drop, nebo dávkový režim pro skripty
  • Flexibilita: Komplexní exclude engine čtený přímo z .gitignore

Funkce aplikace

Kategorie 1: Vytváření záloh

  • Záloha celé složky do timestampovaného adresáře
  • Volitelná komprese do ZIP archivu (0-9 úroveň)
  • Automatické pojmenování:
  • Progress bar s vizualizací průběhu kopírování
  • Detekce repo verze (z APP_VERSION v kódu)
  • Dry-run režim (simulace bez fyzického kopírování)

Kategorie 2: Správa cílových složek

  • Volba zdrojové a cílové složky přes grafické rozhraní nebo dávkový režim
  • Historie posledních použitých cest (recent_sources, recent_targets)
  • Automatické vytvoření cílové složky, nenexistuje-li
  • Generování index.html v cílové složce se seznamem záloh

Kategorie 3: Filtrování souborů (Exclude Engine)

  • Automatické čtení .gitignore z kořene repozitáře
  • Kategorizace vzorů dle sekcí (Headers jako "# Logs", "# Python")
  • Per-category switch (Logs, Python cache, Node deps atd.)
  • Vlastní regex filtry a wildcard patterns
  • Interaktivní náhled co bude zálohováno / zahozeno
  • ExcludeDialog pro snadnou správu patterns
  • Bezpečnostní výchozí chování: .git je vždy ignorován

Kategorie 4: Rotace záloh

  • Automatické mazání starých záloh (FIFO, keep_count)
  • Konfigurovatelný počet uchovaných záloh (default: 10)
  • Manuální správa existujících záloh (delete, restore, info)
  • HistoryDialog pro zobrazení základních informací o záloze
  • Výpis velikosti jednotlivých záloh v historii

Kategorie 5: Statistiky & Monitoring

  • Počet zálohovaných souborů s rozdělením (copied vs skipped)
  • Celková velikost zálohy s lidsky čitelným formátem (KB/MB/GB)
  • Doba trvání operace v HH:MM:SS formátu
  • Log všech operací (globální + per-run)
  • Volitelný HTML log s barevným zvýraznění (OK/Info/Warning/Error)

Kategorie 6: Nastavení & Konfigurace

  • Perzistentní konfigurace (backuper_state.json)
  • Volba kompresního algoritmu (ZIP s úrovní 0-9)
  • Nastavení úrovně komprese (0 = Store, 9 = Ultra)
  • Volba tématu (tmavé / světlé)
  • Volba jazyku (CZ / EN)
  • Pozice a velikost okna (window_geometry)
  • SettingsDialog pro intuitivní správu všech voleb
  • Auto-backup flag (volitelné spoutění při startu)

Kategorie 7: Lokalizace & UI

  • CZ/EN lokalizace (LANG dict se 15+ klíči)
  • Dark/light theme podpora (atribut data-theme)
  • Přechodový efekt při změně motivu
  • Menu (File, Help) s klávesovými zkratkami (Ctrl+N, Ctrl+H atd.)
  • Systémové notifikace (progress, success, error)
  • MainWindow s intuitivním layoutem

Kategorie 8: Advanced Features

  • Asynchronní operace (zálohování běží na pozadí)
  • dávkový režim parametry (--source, --target, --compress, --audit-docs)
  • Generování spouštěcích .bat skriptů v snapshotu (conda aktivace)
  • Versioning support (detekce a bump APP_VERSION v souboru)
  • Atomic ZIP (dočasná složka → komprese → smazání temp)

Workflow zálohování (8 kroků)

Celkový proces od uživatelského spuštění po hotový snapshot:

Krok 1: Příprava

Uživatel vyvolá "Zálohovat" (button / menu / dávkový režim). Aplikace validuje zdrojovou a cílovou cestu (existence, přístupnost), čte konfigurační soubor a parsuje .gitignore.

Krok 2: Skenování souborů

Rekurzivní procházení stromem adresářů (os.walk). Aplikace patterns (gitignore + custom), počítá celkovou velikost zdrojů a generuje seznam souborů k zálohování.

Krok 3: Generování názvu zálohy

Formát: . Příklad: . Safe name bez speciálních znaků.

Krok 4: Kopírování souborů

Vytvoření cílové složky (snapshot_path). Loop přes všechny soubory: vytvoření stromu adresářů, se zachováním metadat, aktualizace progress baru. Statistika: skopírováno / skipnuto.

Krok 5: Komprese (volitelné)

Pokud : s compression_level, atomic ZIP (temp folder → archive → delete temp), ZIP64 pro soubory >4GB. Alternativě záloha zůstává jako složka.

Krok 6: Rotace starých záloh

Výpis všech záloh v target_path (seřazeno podle data). Pokud počet > keep_count: smazání nejstarších až do keep_count (FIFO). Log informace o smazáních. Generování index.html.

Krok 7: Logování & Reporting

Globální log: (append). Per-run log: (per day). Volitelný HTML log: (barevně).

Krok 8: Dokončení

Zobrazení statistik (kopírováno, skipnuto, trvání, velikost). Systémová notifikace (success / error). Aktualizace UI (progress = 100%, tlačítka aktivní). Možnost otevřít složku, zobrazit log, nová záloha.

grafické rozhraní a uživatelské rozhraní

Hlavní okno (ASCII diagram)

┌────────────────────────────────────────────────────────────┐ │ BACKUPER QT v0.1.0.1 [_][□][X]│ ├────────────────────────────────────────────────────────────┤ │ │ │ 📁 Zdrojová složka │ │ [<vybraná složka projektu> [Procházet...] │ │ │ │ 📁 Cílová složka │ │ [D:\Backups] [Procházet...] │ │ │ ├────────────────────────────────────────────────────────────┤ │ │ │ ☑ Komprimovat do ZIP │ │ ☑ Použít exclude patterns [Upravit vzory...] │ │ ☐ Automatická záloha (auto_backup) │ │ │ ├────────────────────────────────────────────────────────────┤ │ PROGRESS │ │ [████████████░░░░░░░░░░░░░░░░░░░░░] 65% (256 MB / 400 MB) │ Kopíruji: src/main.py (5/230 souborů) │ ├────────────────────────────────────────────────────────────┤ │ │ │ [ ZÁLOHOVAT ] [ ZRUŠIT ] [ HISTÓRIA ] [NASTAVENÍ] │ │ │ ├────────────────────────────────────────────────────────────┤ │ Status: Připraveno. Poslední záloha: 2026-02-20 18:45 │ └────────────────────────────────────────────────────────────┘

Menu

MenuPoložkaKlávesaPopis
FileNová zálohaCtrl+NSpustí novou zálohu
Otevřít historiiCtrl+HZobrazí HistoryDialog
NastaveníCtrl+,Otevře SettingsDialog
KonecCtrl+QUkončí aplikaci
HelpO aplikaciZobrazí verzi a autora
NápovědaF1Otevře dokumentaci

Interaktivní prvky

  • QLineEdit: Source folder, Target folder — s Browse tlačítkem
  • QCheckBox: Compress to ZIP, Use exclude patterns, Auto-backup
  • QProgressBar: Lineární indikátor průběhu (0-100%)
  • QPushButton: Backup, Cancel, History, Settings
  • Status bar: Aktuální operace, poslední záloha, trvání

Praktické scénáře a příklady

Scénář 1: Jednoduchá záloha před rebasem

Situace: Pracuješ na feature branche a chceš si vytvořit safety backup před rizikovým rebasem.

  1. V grafické rozhraní vyber zdrojovou složku (tvůj Git repo)
  2. Vyber cílovou složku (např. )
  3. Zaškrtni "Komprimovat do ZIP" (pro šetření místa)
  4. Klikni "Zálohovat"
  5. Počkej na dokončení (progress bar)
  6. Teď můžeš bezpečně provádět rebase — v případě problému se vrátíš ze zálohy

Scénář 2: Automatická rotace s filtrováním

Situace: Chceš si vytvořit denní snapshot projektu, ale nechceš aby se zaplnil disk starými zálohami.

  1. Otevři SettingsDialog a nastav
  2. Nastav (default, balancuje kompres. poměr a čas)
  3. V ExcludeDialog si ponech standardní vzory (.git, __pycache__, node_modules)
  4. Spusť zálohu (ať manuálně nebo spustí cron/scheduler)
  5. Aplikace automaticky smaže zálohy starší než 5 posledních — disk se nezaplní!

Scénář 3: dávkový režim automatizace v Powershellu

Situace: Chceš si vytvořit noční backup pomocí Windows Task Scheduler.

# Spusť zálohu s dávkový režim: python Backuper_QT.py --source C:/Projects/MyRepo --target D:/LongTermBackups --compress --auto-exit # Nebo v .bat skriptu: @echo off cd /d %~dp0 python DEV_TOOLS\Backuper_QT.py --source C:/MyRepo --target D:/Backups --compress echo Backup done at %date% %time%

Pak si v Task Scheduler vytvořiš úlohu která spustí tento .bat každou noc v 3:00 AM.

Scénář 4: Obnova ze starší zálohy

Situace: Něco ti rozbilo a chceš se vrátit na verzi ze zahájení tohoto týdne.

  1. Klikni na "Historie" v hlavním okně
  2. V HistoryDialog vidíš seznam všech záloh s datem
  3. Najdi zálohu z požadovaného dne a klikni na ni
  4. Klikni "Obnovit" (restore)
  5. Aplikace rozbalí ZIP a zkopíruje soubory zpět do původní cesty

Pozor: Záloha obsahuje snapshot z určitého času — novější soubory budou přepsány!

Scénář 5: Archivace se vlastním tagem

Situace: Na konci sprintu chceš si archivovat projekt s značkou "release-v1.5".

python Backuper_QT.py --source C:/MyProject --target D:/Archives --compress --tag "release-v1.5" # Výsledný snapshot se jmenuje např.: # MyProject_0.5.2.1_20260221_143025_release-v1.5.zip

Jméno záloh s tagem je jednoduše identifikovatelné a archivovatelné.

Troubleshooting a diagnostika

Problém Příčina Řešení
"source path not found" Zdroj neexistuje nebo je cesta nesprávná Zkontroluj cestu v grafické rozhraní, ujisti se že složka existuje. Zkus Browse tlačítko.
"no permission" error Nejsi vlastník/nemáš práva na čtení Spusť Backuper jako administrátor (Ctrl+Shift+Esc). Zkontroluj oprávnění složky.
ZIP corruption (velké soubory >4GB) Disk je plný nebo RAM chyba, nebo chybí ZIP64 extension Čistic místo na disku, ujisti se že máš dost RAM. ZIP64 je automatické pro >4GB.
Pomalé kopírování (HDD) Disk je pomalý (HDD místo SSD), vynechání cache složek Upgraduj na SSD (dlouhodobě). Dočasně vynech node_modules, .git atd.
Progress bar "vzplanut" (velké soubory) Normální chování — jeden soubor je opravdu velký (GB) Čekej patiently. Zkontroluj Task Manager (CPU/Disk aktivita). Pusto to.
Config soubor poškozený (JSONDecodeError) Aplikace byla zabita během zápisu configu, nebo ruční chybná editace Aplikace automaticky vytvoří nový config s defaulty. Starý je backupován jako .bak.

FAQ (často kladené otázky)

Q: Jakou kompresi usídat — ZIP nebo složka?

A: ZIP je ideální pro dlouhodobé uchovávání (ostupy % místa). Složka je rychlejší pro aktuální práci (bez overhead decompression). Kompromis: ZIP (default) je vyvážený.

Q: Mohu zálohovat na USB stick nebo síťový disk?

A: Ano! Click na "Procházet..." a vyber cílový disk. Varování: Síťové disky mohou být pomalé (100 MB/s vs 500+ MB/s SSD).

Q: Co se stane, pokud zálohování vypadne uprostředku?

A: Skenování a kopírování jsou atomické. Pokud výpadek: Skenování: nový pokus hezkozpočne od začátku (no harm). Kopírování: nedokončená záloha se přejmenuje na "_INCOMPLETE". Rotace: neprobehme.

Q: Mohu mít více záloh paralelně (2 aplikace najednou)?

A: Technicky ano, ale NEDOPORUČUJEM! Risk: Souběžné záoisy do backuper_state.json (korumpuje se). Konflikty v rotaci. Řešení: Spustit druhou instanci s jiným config souborem.

Q: Jak otestuju exclude patterns bez spuštění zálohy?

A: Dry-run režim dávkový režim: . Vypíše seznam souborů bez fyzického kopírování.

Q: Mohu smazat "Backuper_global_log.txt"?

A: Ano, je to jen log. Normální logování pokračuje. Ale doporučuji si ho uchovávat pro audit.

Q: Jak vrátit se z zálohy (restore)?

A: HistoryDialog → klikni na zálohu → "Obnovit". Obnoví do původního zdroje. Alternativě: ručně zkopíruj složku.

Q: Mohu exportovat zálohy do cloudu (OneDrive, Dropbox)?

A: Ano! Nastav na cloudovou složku. Varování: Cloud sync + ZIP komprese = vysoká CPU zatížení.

Q: Jaká je doporučená frekvence zálohování?

A: Pro kritické projekty: denně (noční cron). Pro běžné projekty: 1× týdně. Před každou rizikou změnou: manuálně.

Q: Lze zálohovat síťové cesty (UNC paths)?

A: Ano, ale s omezeními. Síťové cesty jsou pomalé. Doporučuji lokální ZIP → výřez na síť, místo kopírování přímo do sítě.