Files
x3-backup/README.md
T

217 lines
7.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# x3-Backup
GTK3 Backup/Snapshot-Tool mit rsync Backend.
Erstellt platzsparende Snapshots via Hardlink-Delta, durchstoebern und wiederherstellen von Einzeldateien oder ganzen Systemen.
## Features
- **rsync Snapshots** — Hardlink-Delta fuer platzsparende inkrementelle Backups
- **Snapshot Sidebar** — Alle Snapshots chronologisch sortiert
- **File Browser** — Dateien/Ordner durchsuchen mit Berechtigungen (rwx)
- **Restore** — Einzeldateien oder ganze Verzeichnisse wiederherstellen
- **System Tray** — Icon im Panel mit Status und Kontextmenue
- **Live Log** — Echtzeit-Ausgabe waehrend Backup/Restore
- **History Log** — Komplettes Log durchsuchbar
- **Cronjob** — Geplante Backups direkt aus dem Programm
- **System Backup** — Komplettes Root-Filesystem sichern
- **System Restore** — Aus Live-ISO wiederherstellen
- **CLI Modus** — `--backup`, `--system-backup` fuer Cron/Automation
## Installation
```bash
autoreconf -fi
./configure
make -j$(nproc)
sudo make install
```
Oder lokal bauen und starten:
```bash
autoreconf -fi && ./configure && make -j$(nproc)
./src/x3-backup
```
## Deinstallation
```bash
sudo ./uninstall.sh
```
## Layout
```
+------------------------------------------------------------------+
| x3-Backup [─] [□] [×] |
+------------------------------------------------------------------+
| File | Backup | System | Help |
+------------------------------------------------------------------+
| [New Backup] [Restore] [Delete] | [Settings] [========] 0% |
+------------------------------------------------------------------+
| | |
| Snapshots | [↑] [/home/user/documents] |
| | Select a snapshot to browse |
| ┌────────┐ | ┌──────────────────────────────────────────────────┐|
| │2026-09 │ | │ Name │ Size │ Permissions │ Modified │|
| │07 16:30│ | ├─────────────────┼────────┼─────────────┼──────────┤|
| │ │ | │ Documents │ - │ drwxr-xr-x │ │|
| ├────────┤ | │ Pictures │ - │ drwxr-xr-x │ │|
| │2026-09 │ | │ .bashrc │ 3.4 KB │ -rw-r--r-- │ │|
| │06 02:00│ | │ .ssh │ - │ drwx------ │ │|
| │ │ | │ notes.txt │ 12 KB │ -rw-r--r-- │ │|
| ├────────┤ | │ config.json │ 1.2 KB │ -rw-r--r-- │ │|
| │2026-09 │ | └──────────────────────────────────────────────────┘|
| │05 02:00│ | |
| └────────┘ | ┌──────────────────────────────────────────────────┐|
| | │ Live Log: │|
| | │ [cmd] rsync -aAX --info=progress2 --delete ... │|
| | │ [info] Syncing: /home/user/Documents/project/ │|
| | │ [done] Snapshot created: 2026-09-07_16-30-00 │|
| | │ │|
| | │ [Clear] │|
| | └──────────────────────────────────────────────────┘|
+------------------------------------------------------------------+
| x3-Backup - Idle Status Message|
+------------------------------------------------------------------+
```
## Dateisystem-Struktur
### Konfiguration
```
~/.config/x3-backup/
├── settings.json # Einstellungen
├── x3-backup.log # Log-Datei
```
### Backup-Destination
```
/mnt/backups/ # oder konfigurierter Pfad
├── snapshots/
│ ├── 2026-09-07_16-30-00/ # Snapshot 1 (Hardlinks)
│ │ ├── home/
│ │ │ └── user/
│ │ │ ├── documents/
│ │ │ ├── .bashrc
│ │ │ └── ...
│ │ ├── etc/
│ │ └── ...
│ ├── 2026-09-06_02-00-00/ # Snapshot 2 (nur Aenderungen)
│ │ └── ...
│ └── 2026-09-05_02-00-00/ # Snapshot 3 (aehnlich)
│ └── ...
└── metadata/
├── 2026-09-07_16-30-00.json # Metadaten
├── 2026-09-06_02-00-00.json
└── 2026-09-05_02-00-00.json
```
### Hardlink-Prinzip
```
Snapshot 1 (voll): Snapshot 2 (delta):
fileA (100KB) ──inode1 fileA (100KB) ──inode1 (identisch, Hardlink)
fileB (50KB) ──inode2 fileB (75KB) ──inode3 (geaendert, neue Datei)
fileC (200KB) ──inode3 fileC (200KB) ──inode3 (identisch, Hardlink)
fileD (30KB) ──inode4 (neu)
Platzbedarf: voll + delta (statt 2x voll)
```
## Config (settings.json)
```json
{
"backup_dest": "/mnt/backups",
"source_path": "/",
"exclude_patterns": [
"/mnt",
"/proc",
"/sys",
"/dev",
"/run",
"/tmp",
"/lost+found"
],
"preserve_permissions": true,
"preserve_acls": true,
"preserve_xattrs": true,
"delete_removed": true,
"retention_days": 30,
"retention_count": 10,
"cron_enabled": false,
"cron_schedule": "0 2 * * *",
"cron_label": "x3-backup-auto"
}
```
## CLI Nutzung
```bash
# Backup jetzt erstellen und beenden
x3-backup --backup
# System-Backup (von Live-ISO)
x3-backup --system-backup
# Log auf STDOUT ausgeben
x3-backup --backup --log
# Hilfe
x3-backup --help
```
## Cronjob Beispiel
```bash
# Taeglich um 2:00 Uhr
0 2 * * * /usr/local/bin/x3-backup --backup &
# Alle 6 Stunden
0 */6 * * * /usr/local/bin/x3-backup --backup &
# Woechentlich Sonntag 3:00 Uhr
0 3 * * 0 /usr/local/bin/x3-backup --backup &
```
## Log Format
```
[2026-09-07 16:30:00] [INFO] x3-backup: === x3-backup started ===
[2026-09-07 16:30:00] [INFO] x3-backup: Log file: ~/.config/x3-backup/x3-backup.log
[2026-09-07 16:30:01] [INFO] x3-backup: rsync cmd: rsync -aAX --info=progress2 ...
[2026-09-07 16:30:15] [INFO] x3-backup: [done] Snapshot created: 2026-09-07_16-30-00
```
## Rechte und Wiederherstellung
| Aktion | Benoetigte Rechte |
|---|---|
| Backup erstellen | Normaler User (nur lesend auf Quelle) |
| Datei wiederherstellen | sudo (fuer Root-Berechtigungen) |
| System wiederherstellen | sudo |
| Cronjob installieren | Normaler User (crontab -e) |
## Abhaengigkeiten
- GTK+ 3.0 (>= 3.24)
- json-glib-1.0
- rsync
- crontab (optional)
## Architektur
```
┌─────────────┐ ┌──────────────┐ ┌──────────────┐
│ MainWindow │───▶│SnapshotManager│───▶│ RsyncManager │
│ (GTK UI) │ │ (Snapshots) │ │ (rsync) │
└──────┬──────┘ └──────────────┘ └──────────────┘
│
├── SystemTray (Tray-Icon)
├── SettingsDialog (Einstellungen)
└── Config (JSON)
```