Die 3-2-1 Backup-Regel
3 Kopien deiner Daten
2 verschiedene Medien
1 Kopie Offsite
Diese einfache Regel hat schon unzählige Daten gerettet. In diesem Artikel zeige ich, wie ich sie mit Bareos umsetze.
Warum Bareos?
Nach Evaluierung verschiedener Lösungen (Veeam, Borg, Restic) habe ich mich für Bareos entschieden:
Vorteile:
- Open Source & kostenlos
- Enterprise-Features (Deduplication, Compression)
- Flexibles Tape-Support
- Katalog-Datenbank für schnelle Restores
- Web-UI verfügbar
- Aktive Community
Nachteile:
- Steile Lernkurve
- Konfiguration komplex
- Dokumentation manchmal veraltet
Meine Infrastruktur
Komponenten
Bareos Director (pve1)
├── Storage Daemon Local (alle Nodes)
├── Storage Daemon Synology (NAS)
└── Storage Daemon Offsite (Hetzner Storage Box)
File Daemons:
├── Proxmox Nodes (3×)
├── LXC Container (15×)
├── VMs (10×)
└── Synology NAS
Storage-Architektur
Tier 1 - Lokal (täglich, schnell)
- Location: SSDs auf Proxmox Nodes
- Retention: 7 Tage
- Compression: LZ4
- Encryption: Nein (lokal sicher)
Tier 2 - NAS (täglich, mittel)
- Location: Synology DS920+ mit NFS
- Retention: 30 Tage
- Compression: ZSTD
- Encryption: Ja (AES-256)
Tier 3 - Offsite (wöchentlich, langsam)
- Location: Hetzner Storage Box
- Retention: 365 Tage
- Compression: ZSTD
- Encryption: Ja (AES-256)
Installation & Setup
Bareos Director Installation
| |
File Daemon auf Clients
| |
Konfiguration
Director Hauptkonfiguration
# /etc/bareos/bareos-dir.d/director/bareos-dir.conf
Director {
Name = bareos-dir
QueryFile = "/usr/lib/bareos/scripts/query.sql"
Maximum Concurrent Jobs = 20
Password = "director-password"
Messages = Daemon
Auditing = yes
# TLS für verschlüsselte Kommunikation
TLS Enable = yes
TLS Require = yes
TLS Verify Peer = no
TLS CA Certificate File = /etc/bareos/tls/ca.crt
TLS Certificate = /etc/bareos/tls/server.crt
TLS Key = /etc/bareos/tls/server.key
}
Job Definition - Proxmox VMs
# /etc/bareos/bareos-dir.d/job/backup-proxmox-vms.conf
Job {
Name = "BackupProxmoxVMs"
Type = Backup
Level = Incremental
Client = pve1-fd
FileSet = "ProxmoxVMs"
Storage = Local-Storage
Pool = Daily-Pool
Messages = Standard
Priority = 10
# Zeitsteuerung
Schedule = "DailyCycle"
# Full Backup einmal pro Woche
Full Backup Pool = Weekly-Pool
Differential Backup Pool = Daily-Pool
Incremental Backup Pool = Daily-Pool
# Compression & Encryption
Accurate = yes
# Scripts
Run Before Job = "/etc/bareos/scripts/snapshot-create.sh"
Run After Job = "/etc/bareos/scripts/snapshot-delete.sh"
}
FileSet für VMs
# /etc/bareos/bareos-dir.d/fileset/proxmox-vms.conf
FileSet {
Name = "ProxmoxVMs"
Include {
Options {
Signature = SHA1
Compression = LZ4
OneFS = no
Sparse = yes
}
# VM Disks
File = /var/lib/vz/images
# VM Configs
File = /etc/pve/qemu-server
File = /etc/pve/lxc
}
Exclude {
# Temporäre Dateien
File = /var/lib/vz/images/*/vm-*-cloudinit.qcow2
# Swap Devices
File = /var/lib/vz/images/*/vm-*-swap.qcow2
}
}
Storage Pools
# /etc/bareos/bareos-dir.d/pool/daily.conf
Pool {
Name = Daily-Pool
Pool Type = Backup
Recycle = yes
AutoPrune = yes
Volume Retention = 7 days
Maximum Volume Bytes = 50G
Maximum Volumes = 14
Label Format = "Daily-${Year}-${Month:p/2/0/r}-${Day:p/2/0/r}-${Hour:p/2/0/r}-${Minute:p/2/0/r}"
Volume Use Duration = 23h
Storage = Local-Storage
}
Pool {
Name = Weekly-Pool
Pool Type = Backup
Recycle = yes
AutoPrune = yes
Volume Retention = 30 days
Maximum Volume Bytes = 0
Maximum Volumes = 4
Label Format = "Weekly-${Year}-${WeekOfYear:p/2/0/r}"
Storage = NAS-Storage
}
Pool {
Name = Monthly-Pool
Pool Type = Backup
Recycle = yes
AutoPrune = yes
Volume Retention = 365 days
Maximum Volume Bytes = 0
Maximum Volumes = 12
Label Format = "Monthly-${Year}-${Month:p/2/0/r}"
Storage = Offsite-Storage
}
Storage Definitions
# Local Storage
Storage {
Name = Local-Storage
Address = localhost
Password = "storage-password"
Device = LocalDisk
Media Type = File
Maximum Concurrent Jobs = 5
}
# NAS Storage
Storage {
Name = NAS-Storage
Address = synology.vlb2.local
Password = "storage-password"
Device = NAS-Disk
Media Type = File
Maximum Concurrent Jobs = 3
}
# Offsite Storage
Storage {
Name = Offsite-Storage
Address = u123456.your-storagebox.de
Password = "storage-password"
Device = Offsite-Disk
Media Type = File
Maximum Concurrent Jobs = 1
}
Schedule
# /etc/bareos/bareos-dir.d/schedule/daily-cycle.conf
Schedule {
Name = "DailyCycle"
# Incremental täglich um 23:00
Run = Level=Incremental daily at 23:00
# Differential Samstag 23:00
Run = Level=Differential saturday at 23:00
# Full Sonntag 22:00
Run = Level=Full 1st sunday at 22:00
}
Snapshot-Integration
Pre-Backup Script
| |
Post-Backup Script
| |
Monitoring & Alerting
Grafana Integration
Bareos exportiert Metriken via custom Exporter:
| |
Email-Benachrichtigungen
# /etc/bareos/bareos-dir.d/messages/standard.conf
Messages {
Name = Standard
Director = bareos-dir = all
# Mail bei Fehlern
Mail = admin@vlb2.de = all, !skipped
MailOnSuccess = admin@vlb2.de = all
# Console
Console = all, !skipped, !saved
# Append zu Log
Append = "/var/log/bareos/bareos.log" = all, !skipped
}
Restore-Prozedur
Einzelne Datei wiederherstellen
| |
Komplette VM wiederherstellen
| |
Disaster Recovery - Bare Metal
| |
Testing der Backups
Monatlicher Test:
| |
Performance-Optimierung
Parallele Jobs
# Director
Maximum Concurrent Jobs = 20
# Storage
Maximum Concurrent Jobs = 5
# File Daemon
Maximum Concurrent Jobs = 2
Deduplication
Bareos nutzt Block-Level Deduplication:
Job {
Name = "DedupJob"
Accurate = yes
# Base Job für Incremental
Base = PreviousFullJob
}
Bandwidth Limiting
| |
Kosten-Analyse
Storage-Kosten
Lokal: 2 TB SSD = ~150 € (einmalig)
NAS: 12 TB HDD = ~300 € (einmalig)
Offsite: Hetzner Storage Box 5 TB = ~10 €/Monat
Total: ~570 € + 120 €/Jahr
Zeit-Investition
- Setup: ~40 Stunden
- Wartung: ~2 Stunden/Monat
- Testing: ~4 Stunden/Monat
Best Practices
✅ Backup testen: Ungetestete Backups sind keine Backups
✅ 3-2-1 Regel: Immer befolgen
✅ Verschlüsselung: Für Offsite zwingend
✅ Monitoring: Fehlgeschlagene Backups sofort erkennen
✅ Retention: Klar definieren und einhalten
✅ Dokumentation: DR-Prozeduren schriftlich
✅ Automatisierung: Manuelle Backups werden vergessen
❌ Nur lokale Backups: Single Point of Failure
❌ Keine Tests: Murphy’s Law gilt
❌ Schwache Passwörter: Verschlüsselung ist nutzlos
❌ Ignorierte Fehler: Probleme früh beheben
❌ Keine Versionierung: Corrupted Files verbreiten sich
Erfahrungen & Lessons Learned
Was gut funktioniert
- Snapshot-Integration verhindert inkonsistente Backups
- Tiered Storage spart Kosten
- Automatische Tests geben Sicherheit
- Offsite via Hetzner ist zuverlässig
Was ich anders machen würde
- Früher mit Backup-Tests beginnen
- Monitoring von Anfang an integrieren
- Mehr Zeit in Dokumentation investieren
- Deduplizierung früher aktivieren
Zusammenfassung
Eine durchdachte Backup-Strategie ist Investment in Seelenfrieden. Bareos bietet Enterprise-Features für Homelabs.
Zeit-Investment: ~40 Stunden Setup
Laufende Kosten: ~10 €/Monat
Datensicherheit: Unbezahlbar
Weiterführende Artikel
In dieser Serie:
- Proxmox Cluster Setup
- Monitoring mit Grafana (coming soon)
- Disaster Recovery Tests (coming soon)
Ressourcen
Fragen zur Backup-Strategie? Email mir!