Baz00k@
Backuper QT icon
System / Development

Backuper QT

0.1.0.1

desktop and batch tool for safe backup of the repository (folder/zip). .gitignore support excludes, logs.

What the project solves

desktop and batch tool for safe backup of the repository (folder/zip). .gitignore support excludes, logs.

Typical use

  • DEVELOPMENT - LOCATION BEFORE RISK REFACTORING

How the application works and what it is for

Application overview

Backuper QT is a specialized user-friendly tool for creating dated backups of whole folders and Git repositories. Application solves typical problem of system developers and administrators - the need to quickly and safely back up the project before critical change without filling the backup disk thanks to built-in intelligent rotation of old copies.

Primary purposes

  • Snaphotting Git Repositors and Projects with Automatic Backup History Cleaning
  • Selective advance with advanced filtering (exclusion classes, categorization)
  • Asynchronous operation without blocking UI (background task)
  • Optional ZIP compression with adjustable level (0-9)
  • Automatic rotation - FIFO erasing the oldest backup, saving N last

Main advantages

  • Data security: Backups are atomic, with the preservation of file metadata (times, permissions)
  • Site effectiveness: ZIP64 compression for files > 4 GB, optional archiving
  • User friendliness: Intuitive graphical interface with drag & drop, or batch mode for scripts
  • Flexibility: Complex exclusive engine read directly from .gitignore

Application function

Category 1: Backup creation

  • Backup of the entire folder to the timestamp directory
  • Optional compression to ZIP archive (0-9 level)
  • Automatic naming:
  • Progress bar with visualization of copying process
  • Repo version detection (from APP _ VERSION in code)
  • Dry-run mode (simulation without physical copying)

Category 3: Filtering (Exclude Engine)

  • Automatic reading .gitignor from the root of the repository
  • Section pattern categorisation (Headers as "# Logs," "# Python")
  • Per- category switch (Logs, Python cache, Node deps, etc.)
  • Custom regex filters and wild patterns
  • Interactive preview that will be backed up / discarded
  • ExcludeDialog for easy management of the patterns
  • Safety default behavior: .git is always ignored

Category 4: Backup rotation

  • Automatic lubrication of old backups (FIFO, keep _ count)
  • Configurable number of saved backups (default: 10)
  • Manual administration of existing backups (delete, restore, info)
  • History Dialog for displaying basic backup information
  • Listing the size of individual backups in history

Category 5: Statistics & Monitoring

  • Number of backup files with split (copied vs skipped)
  • Total size of backup with human readable format (KB / MB / GB)
  • Duration of operation in HH: MM: SS format
  • Logo of all operations (global + perrun)
  • Optional HTML log with color highlighting (OK / Info / Warning / Error)

Category 6: Settings & Configuration

  • Persistent configuration (backuper _ state.json)
  • Choice of compression algorithm (ZIP with 0-9 level)
  • Compression level setting (0 = Store, 9 = Ultra)
  • Theme selection (dark / bright)
  • Language Choice (CZ / EN)
  • Window _ geometer positions and size
  • SettingsDialogue for intuitive management of all elections
  • Auto-backup flag (optional start on start)

Category 7: Localization & AI

  • CZ / EN localization (LANG dict with 15 + keys)
  • Dark / light theme support (attribute datatheme)
  • Transition effect when changing the theme
  • Menu (File, Help) with keyboard shortcuts (Ctrl + N, Ctrl + H, etc.)
  • System notification (progress, success, error)
  • MainWindow with intuitive layout

Category 8: Advanced Features

  • Asynchronous Operations (backup runs in the background)
  • batch mode parameters (--source, --target, --compress, --audit-docs)
  • Generating the trigger .bat scripts in snapshot (conda activation)
  • Versioning support (detection and pump APP _ VERSION in file)
  • Atomic ZIP (temporary component → compression → temperature deletion)

Workflow backup (8 steps)

Total process from user start to finished snapshot:

Step 1: Preparation

The user calls out "Backup" (button / menu / batch mode). The application validates the source and destination path (existence, accessibility), reads the configuration file and parsages .gitignore.

Step 2: Scanning Files

Recursive browsing through the directory tree (os.walk). The patterns application (gitignore + custom), calculates the total resource size and generates a list of files to backup.

Step 3: Generating the name of the backup

Format: . Example: . Safe name without special characters.

Step 4: Copy Files

Create target folder (snapshot _ path). Loop through all files: creating a directory tree, with metadata preservation, progress bar update. Statistics: copied / skippered.

Step 5: Compression (optional)

If : s compression _ level, atomic ZIP (tempfolder → archive → delete tempp), ZIP64 for files > 4GB. The backup is an alternative as a folder.

Step 6: Rotation of old backups

List of all advance payments in target _ path (sorted by date). If number > keep _ count: delete the oldest up to keep _ count (FIFO). Log the delete information. Generation index.html.

Step 7: Logging & Reporting

Global Logo: (appendix). Per- run log: (per day). Optional HTML log: (colour).

Step 8: Completion

Display statistics (copied, skippered, duration, size). System notification (success / error). Update of UI (progress = 100%, active buttons). Option to open folder, display log, new backup.

graphical interface and user interface

Main window (ASCII diagram)

You're gonna have to take it easy. IUPAC Name You've got to get out of here. --@@ † Source component (b) the [< selected project folder > [Browse...] --@@ The target component --[ D:\ Backups] --@@ You've got to get out of here. --@@ INCLUDING Compress to ZIP INCLUDING EXCLUDE PATTERNS [Edit Patterns...] ☐ Automatic backup (auto _ backup) --@@ You've got to get out of here. ITEM PROGRESS 65% (256 MB / 400 MB) I copy: src / main.py (5 / 230 files), You've got to get out of here. --@@ ♪ [CHEERING] [RUMBLING] [HISTORIA] [SETTING] --@@ You've got to get out of here. - Status: Ready. Last deposit: 2026-02- 20 18: 45 Processing You've got to get out of here.

Menu

MenuItemKeyDescription
FileNew advanceCtrl + NLaunch new backup
Open HistoryCtrl + HDisplays History Dialog
SettingsCtrl +,Opens SettingsDialog
EndCtrl + QEnds application
HelpAboutDisplays version and author
HelpF1Opens documentation

Interactive elements

  • QLineEdit: Source folder, Target folder - with Browse button
  • QCheckBox: Compress to ZIP, Use exclusion classes, Auto-backup
  • QProgressBar: Linear progress indicator (0- 100%)
  • QPushButton: Backup, Cancel, History, Settings
  • Status bar: Current operations, last advance, duration

Practical scenarios and examples

Scenario 1: Simple deposit before refund

Situation: You're working on a feature branch and you want to create a safety backup before a risk-abort.

  1. In graphical interface, select the source folder (your Git repo)
  2. Select the target folder (e.g. )
  3. Check "Compress to ZIP" (for site saving)
  4. Click "Backup"
  5. Wait for completion (progress bar)
  6. Now you can safely perform the rebase - in case of a problem, you will return from the backup

Scenario 2: Automatic rotation with filtering

Situation: You want to create a daily snapshot project, but you don't want the disk to fill with old backup.

  1. Open SettingsDialog and set
  2. Set (default, balances compression. ratio and time)
  3. In ExcludeDialog keep standard patterns (.git, _ _ pycache _ _, node _ modules)
  4. Run backup (whether manually or triggered cron / scheduler)
  5. The application automatically deletes the backup older than the last 5 - the disk will not be filled!

Scenario 3: Customs Automation in Powershell

Situation: You want to create a night backup with Windows Task Scheduler.

# Start backup with batch mode: python Backuper _ QT.py --source C: / Projects / MyRepo --target D: / LongTermBackups --compress --auto-exit # Or in .bat script: @ echo off cd / d% ~ dp0 python DEV _ TOOLS\ Backuper _ QT.py --source C: / MyRepo --target D: / Backups --compress echo Backup done at% date%% time%

Then you create a task in Task Scheduler that will trigger this .bat every night at 3: 00 AM.

Scenario 4: Restoration from older backup

Situation: Something broke you up and you want to go back to the opening story this week.

  1. Click on "History" in the main window
  2. In History Dialog, you see a list of all the backup dates
  3. Find the backup from the requested day and click on it
  4. Click "Restore" (Restore)
  5. The application unwraps the ZIP and copies the files back to the original path

Attention: Backup includes snapshot from a certain time - newer files will be overwritten!

Scenario 5: Archiving with own tag

Situation: At the end of the sprint you want to file a project with the "release-v1.5" sign.

python Backuper _ QT.py --source C: / MyProject --target D: / Archives --compress --tag "relay-v1.5" # The resulting snapshot is called for example: # MyProject _ 0.5.2.1 _ 20260221 _ 143025 _ relay-v1.5.zip

The name of the backup with tag is easily identifiable and archivable.

Troubleshooting and diagnostics

Problem Cause Solution
"source path not found" Source does not exist or is wrong Check the graphical interface route, make sure the file exists. Try the Browse button.
"no commission" error You are not the owner / you do not have the right to read Run Backuper as administrator (Ctrl + Shift + Esc). Check the folder's permissions.
ZIP corruption (large files > 4GB) Disk is full or RAM error, or missing ZIP64 extension Clean the disk space, make sure you have enough RAM. ZIP64 is automatic for > 4GB.
Slow Copy (HDD) Disc is slow (HDD instead of SSD), omitting cache folders Upgrade to SSD (long term). Temporarily leave out node _ modules, .git etc.
Progress bar "lit" (large files) Normal behavior - one set is really big (GB) Wait patiently. Check Task Manager (CPU / Drive activity). Let it go.
Config file damaged (JSONDecodeError) The application was killed during the writing of config or manual error editing The application automatically creates a new config with default. The old one's baccouded as a .bak.

FAQ (frequently asked questions)

Q: What compression to settle - ZIP or folder?

A: ZIP is ideal for long-term storage (in% of places). The folder is faster for the current work (without overhead decompression). Compromise: ZIP (default) is balanced.

Q: Can I back up to USB stick or network disk?

A: Yes! Click on "Browse..." and select the target drive. Warning: The network drives can be slow (100 MB / s vs 500 + MB / s SSD).

Q: What happens if backup falls out of the middle?

A: Scanning and copying are atomic. If blackouts: Scanning: a new attempt to get nice from the beginning (no harm). Copy: The deposit is renamed "_ INCOMPLETE." Rotation: let's not go through.

Q: Can I have more backup in parallel (2 applications at once)?

A: Technically, yes, but I DON'T RECOMMEND! Risk: Concurrent backups to backuper _ state.json (corrupt). Conflicts in rotation. Solutions: Run second instance with another config file.

Q: How do I test the exclusion classes without starting the backup?

A: Dry-run batch mode scheme: . He'll list the files without physical copying.

Q: Can I delete "Backup _ global _ log.txt"?

A: Yes, it's just a log. Normal logging continues. But I recommend keeping it for audit.

Q: How to return from the backup (rest)?

A: History Dialog → Click on the backup → "Restore." We'll restore to the original source. Alternative: copy the folder manually.

Q: Can I export backup to the cloud (OneDrive, Dropbox)?

A: Yes! Set to the cloud folder. Warning: Cloud sync + ZIP compression = high CPU load.

Q: What is the recommended backup frequency?

A: For critical projects: daily (night cron). For ordinary projects: 1 x per week. Before any risk change: manually.

Q: Can you back up network paths (UNC paths)?

A: Yes, but with restrictions. The network routes are slow. I recommend a local ZIP → cut to the net, instead of copying directly to the network.