โ ๏ธ 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.
Experimental standalone LTO tape archiving tool - no Python installation required!
๐ 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!
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.
- ๐จ 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
- โก 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
- ๐ 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
- Go to Releases
- Download
BackupUSSY-standalone-v0.1.5.zip - Extract to any location (e.g.,
C:\BackupUSSY) - That's it! Double-click
Launch-BackupUSSY.bat
โ
Zero installation required
โ
No Python needed
โ
All dependencies bundled
โ
Works immediately
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- 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
- Python: 3.7 or higher
- Additional tools: MSYS2 or GNU tar/dd
- LTO-4, LTO-5, LTO-6, LTO-7, LTO-8, LTO-9
- Any Windows-compatible tape drive accessible as
\\.\TapeX
Download and Run:
- Download
BackupUSSY-standalone-v0.1.4.zipfrom releases - Extract anywhere you want
- Double-click
Launch-BackupUSSY.bat - 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
1. Install System Dependencies
Option A: MSYS2 (Recommended)
- Download MSYS2
- Install and open MSYS2 terminal:
pacman -S tar coreutils mt-st
- Add to PATH:
C:\msys64\usr\bin
Option B: Manual Tools
- Download GNU tar and dd utilities for Windows
- Place in PATH or project
bindirectory
2. Python Environment Setup
# Create virtual environment
python -m venv .venv
# Activate environment
.venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt3. Initialize Database
python src/database_init.py4. Test Installation
python src/test_runner.pyGUI 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- ๐ Select Source Folder: Browse to folder you want to archive
- ๐ฟ Choose Tape Device: Select LTO device (usually
\\.\Tape0) - โ๏ธ Select Archive Mode:
- Stream Mode: Direct to tape (faster, no intermediate files)
- Cached Mode: Create archive first (allows verification)
- ๐ผ Choose Copies: 1 or 2 tapes for redundancy
- ๐๏ธ Optional: Enable gzip compression
- ๐ Start Archive: Monitor progress in real-time
- 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
- 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
- Search files across all archived tapes
- Filter by filename, path, date, size
- Export search results to CSV
- Browse tape contents without extraction
- View file metadata and archive statistics
- Navigate folder structures
- Restore individual files or entire folders
- Verify tape contents before recovery
- Progress tracking for large restorations
- ๐ฆ 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
# 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- ๐ 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
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
- Location:
logs/job_[archive_name].log - Content: Detailed progress, timing, errors
- Format: Timestamped entries with severity levels
- Location:
logs/archive_log.csv - Content: Archive summary, statistics, checksums
- Usage: Excel analysis, reporting, auditing
- Archives Table: Complete archive metadata
- Files Table: Individual file records with paths
- Statistics: Archive size, file count, compression ratios
# 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# 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"Dependencies missing" Error (Source version only)
- Run
tar --versionanddd --versionto 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
Run Full Test Suite:
python src/test_runner.py --verboseCheck System Status (Source version):
python src/main.py --check-deps- โ 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
- ๐ฑ Web interface for remote management
- ๐ท๏ธ Barcode label support
- ๐ Advanced reporting and analytics
- ๐ Incremental backup support
- ๐ Network tape library integration
Created by: Kyle Durepos
BackupUSSY represents a professional-grade solution for LTO tape archiving, developed with enterprise reliability and user-friendly operation in mind.
Contributions are welcome! Please feel free to:
- Report bugs and issues
- Suggest new features
- Submit pull requests
- Improve documentation
For support, bug reports, or feature requests:
- GitHub Issues: Create an issue
- Documentation: This README and inline code comments
This project is licensed under the MIT License - see the LICENSE file for details.
- ๐ 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
- 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
- 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()andget_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
- Code Structure: Fixed GUI method indentation and organization
- Stability: Improved application reliability and maintainability
- Logic Fixes: Removed duplicated code blocks in import functionality
- 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
- 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
- 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.