Skip to content

mojomast/BackupUSSY

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

22 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿ“ผ BackupUSSY v0.2.0 - Professional LTO Tape Archive Tool with Advanced CLI

โš ๏ธ This project is currently in active development. There is no stable release. All releases are experimental and not ready for production use. Use at your own risk.

Version Platform FreeSimpleGUI License Status

Experimental standalone LTO tape archiving tool - no Python installation required!

Download Latest Release

๐ŸŽ‰ Version 0.2: Major Terminal Interface Release Complete command-line interface with interactive menus and professional-grade functionality

๐ŸŽ‰ NEW: Advanced Terminal Interface with Interactive Menus! ๐ŸŽ‰ NEW: Honest Hardware Detection - No More Fake Devices!


๐ŸŽฏ Overview

BackupUSSY is a comprehensive LTO tape archive solution designed for Windows environments. This tool focuses on archival (non-rotating) backups with support for writing to one or two tapes per archive job, ensuring your critical data is preserved with enterprise-grade reliability.

โœจ Key Features

๐Ÿ–ฅ๏ธ Dual Interface Design

  • ๐ŸŽจ Modern GUI: Intuitive FreeSimpleGUI interface for desktop users
  • ๐Ÿ’ป Advanced CLI: Professional command-line interface for automation
  • ๐ŸŽฏ Interactive Menus: Beautiful terminal menus for guided operations
  • ๐Ÿ“Š Real-time Progress: Live progress bars in both GUI and CLI
  • ๐Ÿ” Honest Hardware Detection: Only reports real hardware, no fake devices
  • ๐ŸŽฏ One-Click Operation: Simple workflow for complex operations
  • ๐Ÿ“ฑ Standalone: No Python installation required

๐Ÿ—๏ธ Flexible Archive Modes

  • โšก Stream Mode: Direct streaming to tape using tar | dd
    • Faster execution with no intermediate files
    • Ideal for large datasets with limited disk space
  • ๐Ÿ’พ Cached Mode: Create archive file first, then write to tape
    • Full checksum verification with SHA256
    • Allows pre-verification before tape writing
  • ๐Ÿ”„ Dual Tape Support: Option to create two copies (primary and backup)
  • ๐Ÿ—œ๏ธ Compression Support: Optional gzip compression for space efficiency

๐Ÿ›ก๏ธ Enterprise Features

  • ๐Ÿ“‹ SQLite Database: Complete archive indexing with searchable metadata
  • ๐Ÿ” Advanced Search: Find files across all archived tapes
  • ๐Ÿ“‚ Tape Browser: Browse tape contents without extraction
  • ๐Ÿ” Recovery System: Comprehensive file and folder recovery tools
  • ๐Ÿ“Š Statistics Tracking: Detailed archive statistics and reporting
  • ๐Ÿ”ง Automated Installation: One-click setup with dependency management
  • ๐Ÿ—ƒ๏ธ Export/Import: Archive database backup and restore
  • ๐Ÿงช Full Test Coverage: Comprehensive test suite for reliability
  • ๐Ÿ’ป Terminal Interface: Complete CLI with interactive menus and wizards
  • ๐Ÿ”ง Professional Commands: Full command-line automation support

๐Ÿš€ Quick Start

Standalone Edition (Experimental) - No Python Required!

Download Latest Release

  1. Go to Releases
  2. Download BackupUSSY-standalone-v0.1.5.zip
  3. Extract to any location (e.g., C:\BackupUSSY)
  4. That's it! Double-click Launch-BackupUSSY.bat

โœ… Zero installation required
โœ… No Python needed
โœ… All dependencies bundled
โœ… Works immediately

For Developers: Source Code

git clone https://github.com/mojomast/backupussy.git
cd backupussy
python -m venv .venv
.venv\Scripts\activate
pip install -r requirements.txt
python src/database_init.py

๐Ÿ“‹ System Requirements

Standalone Version (Experimental)

  • OS: Windows 10/11 (64-bit)
  • RAM: 4GB (8GB recommended for large archives)
  • Storage: 20MB for application + space for archives
  • Hardware: LTO tape drive connected via SCSI/SAS/Fibre Channel
  • Dependencies: None! Everything is bundled

Source Version (For Developers)

  • Python: 3.7 or higher
  • Additional tools: MSYS2 or GNU tar/dd

Supported LTO Drives

  • LTO-4, LTO-5, LTO-6, LTO-7, LTO-8, LTO-9
  • Any Windows-compatible tape drive accessible as \\.\TapeX

๐Ÿ› ๏ธ Installation

Standalone Version (Zero-Setup)

Download and Run:

  1. Download BackupUSSY-standalone-v0.1.4.zip from releases
  2. Extract anywhere you want
  3. Double-click Launch-BackupUSSY.bat
  4. Done! BackupUSSY is ready to use

What's included:

  • โœ… BackupUSSY.exe (compiled application)
  • โœ… dd.exe, tar.exe, gzip.exe (bundled tools)
  • โœ… All required DLLs
  • โœ… Launch scripts
  • โœ… Complete documentation
  • โœ… License compliance files

Manual Installation

1. Install System Dependencies

Option A: MSYS2 (Recommended)

  1. Download MSYS2
  2. Install and open MSYS2 terminal:
    pacman -S tar coreutils mt-st
  3. Add to PATH: C:\msys64\usr\bin

Option B: Manual Tools

  • Download GNU tar and dd utilities for Windows
  • Place in PATH or project bin directory

2. Python Environment Setup

# Create virtual environment
python -m venv .venv

# Activate environment
.venv\Scripts\activate

# Install dependencies
pip install -r requirements.txt

3. Initialize Database

python src/database_init.py

4. Test Installation

python src/test_runner.py

๐Ÿš€ Usage

Starting the Application

GUI Interface (Traditional):

# Standalone version
BackupUSSY.exe

# Source version
python src/gui.py

๐Ÿ†• Terminal Interface (Recommended for Advanced Users):

# Interactive menu system
python src/cli.py menu

# Wizard mode (guided workflows)
python src/cli.py menu --mode wizard

# Direct commands for automation
python src/cli.py archive create /path/to/source --device \\.\Tape0 --compress
python src/cli.py status devices
python src/cli.py search "*.pdf" --after 2025-01-01

Creating Archives

  1. ๐Ÿ“‚ Select Source Folder: Browse to folder you want to archive
  2. ๐Ÿ’ฟ Choose Tape Device: Select LTO device (usually \\.\Tape0)
  3. โš™๏ธ Select Archive Mode:
    • Stream Mode: Direct to tape (faster, no intermediate files)
    • Cached Mode: Create archive first (allows verification)
  4. ๐Ÿ“ผ Choose Copies: 1 or 2 tapes for redundancy
  5. ๐Ÿ—œ๏ธ Optional: Enable gzip compression
  6. ๐Ÿš€ Start Archive: Monitor progress in real-time

Archive Modes Explained

โšก Stream Mode

  • Process: tar -czf - folder/ | dd of=\\.\Tape0 bs=64k
  • Advantages: Faster, no disk space required
  • Best for: Large datasets, limited disk space
  • Limitations: No pre-verification possible

๐Ÿ’พ Cached Mode

  • Process: Create archive.tar.gz โ†’ Verify โ†’ Write to tape
  • Advantages: SHA256 verification, can retry if needed
  • Best for: Critical data requiring verification
  • Requirements: Additional disk space equal to archive size

Database & Search Features

๐Ÿ” Search Interface

  • Search files across all archived tapes
  • Filter by filename, path, date, size
  • Export search results to CSV

๐Ÿ“‚ Tape Browser

  • Browse tape contents without extraction
  • View file metadata and archive statistics
  • Navigate folder structures

๐Ÿ”ง Recovery Manager

  • Restore individual files or entire folders
  • Verify tape contents before recovery
  • Progress tracking for large restorations

๐Ÿ’ป Terminal Interface Features

๐ŸŽฏ Interactive Menu System

  • ๐Ÿ“ฆ Archive Operations: Create, estimate, manage archive jobs
  • ๐Ÿ”„ Recovery Operations: List, browse, extract archives
  • ๐Ÿ” Search Operations: Find files across all archives
  • โš™๏ธ System Management: Tape and database management
  • ๐Ÿ“Š System Status: Real-time system monitoring
  • ๐Ÿง™ Wizard Mode: Guided step-by-step workflows

๐Ÿ”ง Professional CLI Commands

# Archive operations
python src/cli.py archive create /source --device \\.\Tape0 --compress
python src/cli.py archive estimate /source
python src/cli.py archive list-jobs

# Recovery operations  
python src/cli.py recover list --tape TAPE001
python src/cli.py recover extract --archive backup.tar.gz --output /restore

# Search operations
python src/cli.py search "*.pdf" --tape TAPE001 --after 2025-01-01
python src/cli.py search --export results.csv

# System management
python src/cli.py manage tapes list
python src/cli.py manage config generate
python src/cli.py status devices

โœจ Smart Features

  • ๐Ÿ” Honest Hardware Detection: Only reports real tape devices
  • ๐ŸŽฏ Auto-Device Selection: Smart device auto-detection
  • ๐Ÿ›ก๏ธ Safe Testing: Built-in dry-run mode for testing without hardware
  • ๐Ÿ“Š Real-time Feedback: Live progress and status updates
  • ๐ŸŽจ Beautiful Output: Color-coded messages and progress bars

๐Ÿ“ Project Structure

backupussy/
โ”œโ”€โ”€ ๐Ÿ’ป APPLICATION SOURCE
โ”‚   โ””โ”€โ”€ src/
โ”‚       โ”œโ”€โ”€ gui.py               # Main GUI application
โ”‚       โ”œโ”€โ”€ main.py              # Entry point and dependency management
โ”‚       โ”œโ”€โ”€ archive_manager.py   # Archive creation logic
โ”‚       โ”œโ”€โ”€ tape_manager.py      # Tape operations
โ”‚       โ”œโ”€โ”€ logger_manager.py    # Logging system
โ”‚       โ”œโ”€โ”€ database_manager.py  # SQLite database
โ”‚       โ”œโ”€โ”€ recovery_manager.py  # File recovery
โ”‚       โ”œโ”€โ”€ search_interface.py  # Search functionality
โ”‚       โ”œโ”€โ”€ advanced_search.py   # Advanced search GUI
โ”‚       โ”œโ”€โ”€ tape_browser.py      # Tape content browser
โ”‚       โ”œโ”€โ”€ tape_library.py      # Tape library management
โ”‚       โ”œโ”€โ”€ database_init.py     # Database initialization
โ”‚       โ”œโ”€โ”€ test_runner.py       # Comprehensive test suite
โ”‚       โ”œโ”€โ”€ test_recovery.py     # Recovery system tests
โ”‚       โ””โ”€โ”€ version.py           # Version information
โ”‚
โ”œโ”€โ”€ ๐Ÿ“‹ DOCUMENTATION
โ”‚   โ”œโ”€โ”€ README.md                # This comprehensive guide
โ”‚   โ”œโ”€โ”€ CHANGELOG.md             # Version history and changes
โ”‚   โ”œโ”€โ”€ CONTRIBUTING.md          # Contribution guidelines
โ”‚   โ””โ”€โ”€ requirements.txt         # Python dependencies
โ”‚
โ”œโ”€โ”€ ๐Ÿ”ง CONFIGURATION
โ”‚   โ”œโ”€โ”€ .gitignore               # Git ignore rules
โ”‚   โ”œโ”€โ”€ LICENSE                  # MIT license
โ”‚   โ””โ”€โ”€ .github/workflows/       # CI/CD automation
โ”‚
โ””โ”€โ”€ ๐Ÿ“Š RUNTIME DATA (created on first run)
    โ”œโ”€โ”€ logs/
    โ”‚   โ”œโ”€โ”€ archive_log.csv      # Cumulative job log
    โ”‚   โ””โ”€โ”€ job_*.log            # Individual job logs
    โ””โ”€โ”€ data/
        โ””โ”€โ”€ archives.db          # SQLite archive database

๐Ÿ“Š Logging & Monitoring

Individual Job Logs

  • Location: logs/job_[archive_name].log
  • Content: Detailed progress, timing, errors
  • Format: Timestamped entries with severity levels

Cumulative CSV Log

  • Location: logs/archive_log.csv
  • Content: Archive summary, statistics, checksums
  • Usage: Excel analysis, reporting, auditing

Database Logging

  • Archives Table: Complete archive metadata
  • Files Table: Individual file records with paths
  • Statistics: Archive size, file count, compression ratios

๐Ÿ”ง Advanced Features

Database Management

# Export database
python src/database_manager.py --export backup.sql

# Import database
python src/database_manager.py --import backup.sql

# Database statistics
python src/database_manager.py --stats

Command Line Operations

# Run specific tests
python src/test_runner.py --test archive

# Recovery operations
python src/recovery_manager.py --tape Tape0 --restore /path/to/file

# Advanced search
python src/advanced_search.py --pattern "*.pdf" --date-after 2024-01-01

๐Ÿ› Troubleshooting

Common Issues

"Dependencies missing" Error (Source version only)

  • Run tar --version and dd --version to verify tools
  • Install MSYS2 or ensure tools are in PATH
  • For standalone version: Extract fresh copy from release zip

"Tape device not accessible" Error

  • Verify tape drive power and connections
  • Check Windows Device Manager for tape device
  • Try different device names (\\.\Tape1, \\.\Tape2)
  • Run application as Administrator

"Archive creation failed" Error

  • Check source folder permissions
  • Verify sufficient disk space (cached mode)
  • Ensure folder path contains no special characters
  • Review detailed logs in logs/ directory

Performance Issues

  • Use Stream mode for large archives
  • Ensure adequate RAM (8GB+ recommended)
  • Check tape drive speed compatibility
  • Consider compression for repetitive data

Diagnostic Tools

Run Full Test Suite:

python src/test_runner.py --verbose

Check System Status (Source version):

python src/main.py --check-deps

๐Ÿ† Features & Capabilities

โœ… Completed Features

  • โœ… Standalone Application: No Python installation required
  • โœ… Modern GUI Interface: Complete FreeSimpleGUI application
  • โœ… Archive Modes: Stream and cached with compression
  • โœ… Dual Tape Support: Primary and backup copies
  • โœ… Database System: SQLite with full indexing
  • โœ… Search & Recovery: Advanced file search and recovery
  • โœ… Tape Management: Browse, verify, and manage tapes
  • โœ… Comprehensive Logging: Multiple logging levels and formats
  • โœ… Bundled Dependencies: dd, tar, gzip included
  • โœ… Zero-Setup Distribution: Extract and run

๐Ÿ”ฎ Future Enhancements

  • ๐Ÿ“ฑ Web interface for remote management
  • ๐Ÿท๏ธ Barcode label support
  • ๐Ÿ“ˆ Advanced reporting and analytics
  • ๐Ÿ”„ Incremental backup support
  • ๐ŸŒ Network tape library integration

๐ŸŽ“ Credits

Created by: Kyle Durepos

BackupUSSY represents a professional-grade solution for LTO tape archiving, developed with enterprise reliability and user-friendly operation in mind.

๐Ÿค Contributing

Contributions are welcome! Please feel free to:

  • Report bugs and issues
  • Suggest new features
  • Submit pull requests
  • Improve documentation

๐Ÿ“ž Support

For support, bug reports, or feature requests:

  • GitHub Issues: Create an issue
  • Documentation: This README and inline code comments

๐Ÿ“œ License

This project is licensed under the MIT License - see the LICENSE file for details.

๐Ÿท๏ธ Version History

v0.2.0 - Major Terminal Interface Release โญ

  • ๐ŸŽ‰ Complete CLI Interface: Professional command-line interface with all GUI functionality
  • ๐ŸŽฏ Interactive Menu System: Beautiful terminal menus with emoji navigation
  • ๐Ÿง™ Wizard Mode: Guided step-by-step workflows for complex operations
  • ๐Ÿ”ง Hardware Detection Fix: Removed fake device detection - only reports real hardware
  • ๐Ÿ“Š Status Commands: Comprehensive system status and device monitoring
  • ๐Ÿ” Search Commands: Advanced search with multiple filters and export
  • ๐Ÿ“ฆ Archive Commands: Full archive creation, estimation, and management
  • ๐Ÿ”„ Recovery Commands: Complete recovery system with selective extraction
  • โš™๏ธ Management Commands: Tape, device, database, and configuration management
  • ๐Ÿ›ก๏ธ Safety Features: Built-in dry-run mode and confirmation prompts
  • ๐ŸŽจ User Experience: Color-coded output, progress bars, and helpful error messages
  • ๐Ÿงช Test Suite: 91% test success rate with comprehensive coverage
  • ๐Ÿ“š Documentation: Complete command documentation and examples

v0.1.5 - Critical GUI Structure Fixes

  • Application Startup: Fixed "LTOArchiveGUI object has no attribute populate_recovery_tapes" error that prevented startup
  • Method Structure: Fixed all standalone functions to be proper class methods - resolved 50+ indentation issues
  • Missing Methods: Added all missing UI update methods for tabs (populate_recovery_tapes, populate_search_tapes, update_tape_list)
  • Syntax Errors: Resolved all syntax and indentation errors that prevented compilation
  • UI Integration: All tabs now have proper method implementations and error handling
  • Application Stability: Application now starts and runs without critical structural errors

v0.1.4 - Database & UI Critical Fixes

  • Database Population Fix: Fixed issue where database wasn't being populated when folders were stored on cassettes
  • UI Refresh Fix: Fixed UI not updating with new files after successful archive operations
  • Missing Methods: Added find_archive_by_name() and get_archive_files() database methods
  • Statistics Display: Fixed method call errors in statistics display
  • UI Integration: Implemented missing UI update methods for all tabs
  • Enhanced Error Handling: Improved error logging with full stack traces
  • Real-time Updates: All tabs now properly refresh after archive operations

v0.1.3 - GUI Structure Improvements

  • Code Structure: Fixed GUI method indentation and organization
  • Stability: Improved application reliability and maintainability
  • Logic Fixes: Removed duplicated code blocks in import functionality

v0.1.2 - Critical Bug Fixes

  • ArchiveMode Import Fix: Fixed missing import causing archive job failures
  • Database Method Fix: Corrected statistics method calls
  • Enhanced Stability: Improved application reliability and error handling
  • Better Error Messages: More descriptive errors for troubleshooting

v0.1.1 - Improved Tape Detection

  • Enhanced Tape Detection: WMI-based device discovery for better compatibility
  • Improved Reliability: Better device access fallbacks and error handling
  • Debug Tools: Added diagnostic utilities for troubleshooting
  • User Experience: More robust device selection and refresh functionality

v0.1 - Initial Release

  • Complete standalone application (no Python required)
  • Modern GUI with FreeSimpleGUI
  • Stream and cached archive modes with compression
  • Dual tape support for redundancy
  • SQLite database with full indexing
  • Advanced search and recovery capabilities
  • Comprehensive logging and monitoring
  • Bundled dependencies (dd, tar, gzip)
  • Zero-setup distribution

๐ŸŽ‰ BackupUSSY v0.2.0: Experimental release โ€“ not production-ready! ๐ŸŽ‰

Choose Your Interface:

  • ๐Ÿ–ฅ๏ธ GUI Mode: python src/gui.py - Traditional point-and-click interface
  • ๐Ÿ’ป CLI Mode: python src/cli.py menu - Professional terminal interface
  • ๐Ÿง™ Wizard Mode: python src/cli.py menu --mode wizard - Guided workflows
  • ๐Ÿค– Automation: Direct CLI commands for scripting and automation

Archive your critical data to LTO tapes with confidence and reliability.

About

๐Ÿšง Experimental project โ€“ no stable release. Not production-ready. BackupUSSY is a comprehensive LTO tape archive solution designed for Windows environments. This tool focuses on archival (non-rotating) backups with support for writing to one or two tapes per archive job, ensuring your critical data is preserved with enterprise-grade reliability.

Resources

License

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages