Commit Graph

10 Commits

Author SHA1 Message Date
root
bb076fd9b3 Safety and reliability: timestamped snapshot names, safer LUKS open via stdin, read-only filesystem-aware mounts, VG free-space preflight in GUI; CLI strict mode and file-level snapshot sizing; README updates 2025-10-15 09:54:13 +02:00
root
a8bc889e47 fix: Properly handle widget switching between modes
Issues fixed:
1. Source widget now correctly switches between combobox and listbox
2. Mode changes properly refresh and show correct source options
3. Added better logging to track widget switches
4. Clear selections when switching modes
5. Force UI update after widget changes

Now:
- LV modes (lv_to_borg, files_to_borg) show multi-select listbox
- VG modes (vg_to_borg) show single-select combobox
- Widget switching works correctly when changing modes
- Borg settings appear for all Borg modes
2025-10-09 08:51:13 +02:00
root
bfd3c08fb3 fix: Correct LV vs VG selection logic
The refresh_drives method was incorrectly showing VGs for all modes.
Now correctly shows:
- LVs for: lv_to_lv, lv_to_raw, lv_to_borg, files_to_borg
- VGs for: vg_to_raw, vg_to_borg

This fixes the issue where users couldn't select individual LVs.
2025-10-09 08:42:57 +02:00
root
543b95cb61 feat: Add multi-LV selection and fix Borg settings visibility
Fixes:
1. Files → Borg mode now shows Borg settings panel
2. LV → Borg and Files → Borg modes support multi-selection

Multi-LV Selection:
- Replace single combobox with multi-select listbox for LV modes
- Hold Ctrl/Cmd to select multiple logical volumes
- Backup all selected LVs sequentially in one operation
- Shows progress for each LV individually
- Continues with remaining LVs if one fails
- Summary report at the end

Benefits:
- No need to start separate backup processes manually
- Repository initialized once, used for all LVs
- Better deduplication across multiple LVs
- Clear progress tracking and error reporting
- Time-efficient for backing up multiple volumes

GUI Changes:
- Dynamic source selection widget (combobox vs listbox)
- Helper text explaining multi-selection
- Improved confirmation dialogs showing all selected LVs
- Enhanced progress reporting for multi-LV operations

Perfect for backing up boot, root, home, etc. in one go!
2025-10-09 08:29:58 +02:00
root
7708b98674 feat: Add file-level snapshot backup mode for space efficiency
Perfect for data volumes like home partitions that are nearly full.

New mode: Files → Borg
- Creates LVM snapshot (consistent point-in-time state)
- Mounts snapshot to temporary location
- Borg backs up actual files (not empty blocks)
- Unmounts and cleans up snapshot

Benefits vs block-level backup:
- Space efficient: 305GB files vs 358GB entire LV
- Better compression: Borg works on real file data
- Superior deduplication: File-content based
- No snapshot space issues: Shorter operation time
- Easier file recovery: Browse/restore individual files

Use cases:
- Block-level: System volumes (root, boot) for exact state
- File-level: Data volumes (home) for space efficiency

GUI: Added 'Files → Borg' mode
CLI: Added 'files-to-borg' mode

Example:
sudo ./enhanced_simple_backup.sh files-to-borg /dev/internal-vg/home /repo --new-repo

This solves the 90% full home partition backup problem!
2025-10-09 08:03:00 +02:00
root
f12d07be7f fix: Dynamic snapshot sizing to prevent I/O errors
Problem: Fixed 500MB snapshot size was too small for large/active LVs,
causing I/O errors when snapshot space was exhausted during backup.

Solution: Calculate appropriate snapshot size based on LV size:
- Use 10% of LV size for snapshot space
- Minimum 1GB to handle reasonable activity
- Shows snapshot size in logs for transparency

Example:
- 20GB LV → 2GB snapshot
- 100GB LV → 10GB snapshot
- 500MB LV → 1GB snapshot (minimum)

This prevents snapshot overflow and resulting I/O errors during backup.

Changes:
- GUI: Calculate snapshot size before creating
- CLI: Same dynamic sizing logic
- Both show calculated snapshot size in output
- Handles both single LV and VG backup modes
2025-10-09 01:06:12 +02:00
root
c86fee78cb fix: Solve space issues in VG→Borg backups
Problem: VG→Borg was creating temp files for all LVs simultaneously,
causing 'no space left' errors when LVs are large.

Solution: Process LVs sequentially instead of simultaneously:
1. Create snapshot for one LV
2. Stream it directly to Borg (no temp files)
3. Remove snapshot immediately
4. Move to next LV

Changes:
- VG→Borg now creates separate archives per LV instead of one big archive
- Each LV gets its own archive: vg_internal-vg_lv_root_20241009_123456
- No temporary files needed - direct streaming
- Space-efficient: only one snapshot exists at a time
- More robust: failure of one LV doesn't affect others

Benefits:
- No more space issues regardless of LV sizes
- Faster cleanup between LVs
- Individual LV recovery possible
- Better error isolation
- Still preserves block-level backup benefits
2025-10-09 00:51:15 +02:00
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
root
179a84e442 feat: Add Borg Backup support to simple LVM backup system
- Add LV → Borg and VG → Borg backup modes
- GUI: Borg settings panel with repo path, encryption, passphrase
- CLI: Enhanced script with Borg options (--new-repo, --encryption, --passphrase)
- Automatic repository initialization for new repos
- Support for all Borg encryption modes (none, repokey, keyfile)
- Mount snapshots temporarily for file-level Borg backups
- Comprehensive cleanup of snapshots and mount points
- Updated documentation and examples

Benefits:
- Deduplication and compression
- Strong encryption support
- Incremental backups capability
- Space-efficient storage
- Still maintains simple snapshot → backup → cleanup workflow
2025-10-09 00:37:17 +02:00
root
871a57947d feat: Enhanced simple LVM backup system
- Add 3 backup modes: LV→LV, LV→Raw, VG→Raw
- Simple GUI with mode selection and dynamic target lists
- Command-line version with clear mode support
- Enhanced drive listing with mode-specific options
- Minimal logic: just snapshot → copy → cleanup
- No complex migration features that cause system issues
- Supports refreshing existing backups and creating fresh ones
2025-10-09 00:27:34 +02:00