Files
backup_to_external_m.2/README.md
root aee3d5019c fix: Implement proper block-level Borg backups
BREAKING CHANGE: Borg backups now store raw block devices instead of files

Changes:
- LV→Borg: Stores snapshot as raw block device (.img file) in Borg
- VG→Borg: Stores each LV as separate .img files in Borg repository
- No more file-level mounting - preserves exact block-level state
- Uses dd | borg create --stdin-name for LV backups
- Creates temporary .img files for VG backups
- Maintains all filesystem metadata, boot sectors, etc.
- Better deduplication for similar block patterns

Benefits:
- Exact block-level restoration possible
- Preserves all filesystem metadata
- Better suited for system/boot volume backups
- Still gets Borg's compression, deduplication, encryption
- Clear difference between LV and VG modes

Now LV→Borg and VG→Borg have distinct, useful purposes:
- LV→Borg: Single logical volume as one block device
- VG→Borg: All logical volumes as separate block devices
2025-10-09 00:45:22 +02:00

135 lines
4.0 KiB
Markdown

# Enhanced Simple LVM Backup System with Borg Support
A reliable, straightforward backup system for LVM-enabled Linux systems. Born from the need for simple, dependable backups without complex logic that can cause system issues.
## Philosophy
**Simple is better.** This system does exactly three things:
1. Create LVM snapshot
2. Copy data (dd/pv for raw, Borg for repositories)
3. Clean up snapshot
No complex migration logic, no fancy features that can break. Just reliable backups.
## Features
### Five Backup Modes
- **LV → LV**: Update existing logical volume backups
- **LV → Raw**: Create fresh backups on raw devices
- **VG → Raw**: Clone entire volume groups with LVM metadata
- **LV → Borg**: Backup logical volume **block device** to Borg repository (preserves exact block-level state)
- **VG → Borg**: Backup **all block devices** from volume group to Borg repository
### Two Interfaces
- **GUI**: `simple_backup_gui.py` - User-friendly interface with Borg configuration
- **CLI**: `enhanced_simple_backup.sh` - Command-line power user interface
## Quick Start
### 1. See Available Options
```bash
sudo ./list_drives.sh
```
### 2. Choose Your Backup Mode
**Update existing backup:**
```bash
sudo ./enhanced_simple_backup.sh lv-to-lv /dev/internal-vg/root /dev/backup-vg/root
```
**Fresh backup to external drive:**
```bash
sudo ./enhanced_simple_backup.sh lv-to-raw /dev/internal-vg/root /dev/sdb
```
**Clone entire system:**
```bash
sudo ./enhanced_simple_backup.sh vg-to-raw internal-vg /dev/sdb
```
**Use the GUI:**
```bash
sudo python3 simple_backup_gui.py
```
**Borg repository backups (block-level):**
```bash
# Create new Borg repo and backup LV as block device
sudo ./enhanced_simple_backup.sh lv-to-borg /dev/internal-vg/root /path/to/borg/repo --new-repo --encryption repokey --passphrase mypass
# Backup entire VG as multiple block devices to existing repo
sudo ./enhanced_simple_backup.sh vg-to-borg internal-vg /path/to/borg/repo --passphrase mypass
```
**Key Difference:**
- **LV → Borg**: Stores the raw snapshot as `{lv_name}.img` in Borg
- **VG → Borg**: Stores all LVs as separate `.img` files (`root.img`, `home.img`, etc.)
## Files
### Core System
- `simple_backup_gui.py` - GUI interface with mode selection
- `enhanced_simple_backup.sh` - CLI with three backup modes
- `list_drives.sh` - Helper to show available sources/targets
- `SIMPLE_BACKUP_README.md` - Detailed documentation
### Legacy Files
- `old_scripts/` - Previous complex implementations (archived)
- Various `.md` files - Documentation from previous iterations
## Requirements
- LVM-enabled Linux system
- Root access (`sudo`)
- Python 3 + tkinter (for GUI)
- `pv` command (optional, for progress display)
- **Borg Backup** (for Borg modes): `sudo apt install borgbackup`
## Safety Features
- Clear confirmations before destructive operations
- Automatic snapshot cleanup on errors
- Emergency stop functionality (GUI)
- Input validation and error handling
## What This System Does NOT Do
- Complex migration between different LVM setups
- Automatic boot repair or GRUB handling
- Multiple backup formats or compression
- Network backups or cloud integration
- File-level incremental backups
For those features, use dedicated tools like Borg Backup, CloneZilla, or rsync.
## Why This Approach?
Previous versions of this project included complex migration logic that occasionally caused system issues. This version returns to basics:
✅ Uses standard LVM commands only
✅ Minimal chance of errors
✅ Easy to understand and debug
✅ Predictable behavior
✅ No hidden "smart" features
## Recovery
### From LV Backup
Mount the backup LV and copy files, or use it to restore your system.
### From Raw Device Backup
Boot directly from the device, or restore using dd in reverse.
### From VG Clone
Import the volume group or boot directly from the cloned device.
## Contributing
Keep it simple. Any additions should follow the core principle: minimal logic, maximum reliability.
## License
Open source - use and modify as needed.