Backuper QT
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)
Menu
| Menu | Položka | Klávesa | Popis |
|---|---|---|---|
| File | Nová záloha | Ctrl+N | Spustí novou zálohu |
| Otevřít historii | Ctrl+H | Zobrazí HistoryDialog | |
| Nastavení | Ctrl+, | Otevře SettingsDialog | |
| Konec | Ctrl+Q | Ukončí aplikaci | |
| Help | O aplikaci | Zobrazí verzi a autora | |
| Nápověda | F1 | Otevř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.
- V grafické rozhraní vyber zdrojovou složku (tvůj Git repo)
- Vyber cílovou složku (např. )
- Zaškrtni "Komprimovat do ZIP" (pro šetření místa)
- Klikni "Zálohovat"
- Počkej na dokončení (progress bar)
- 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.
- Otevři SettingsDialog a nastav
- Nastav (default, balancuje kompres. poměr a čas)
- V ExcludeDialog si ponech standardní vzory (.git, __pycache__, node_modules)
- Spusť zálohu (ať manuálně nebo spustí cron/scheduler)
- 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.
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.
- Klikni na "Historie" v hlavním okně
- V HistoryDialog vidíš seznam všech záloh s datem
- Najdi zálohu z požadovaného dne a klikni na ni
- Klikni "Obnovit" (restore)
- 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".
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ě.
