Ein einfaches, eigenständiges Backup- & Restore-Tool für Server. Keine externen Abhängigkeiten außer Standard-Unix-Tools (bash, tar, bc). Gedacht um Datenbankzustände einzufrieren, zu tauschen und bei Bedarf wiederherzustellen.
- Komprimierte Backups — speichert Archive als
.tar.gz, typischerweise 60–80% kleiner als rohe Ordner - Benannte Backups — jedes Backup bekommt ein lesbares Label
- Notizen/Tags — Backups nachträglich kommentieren (z.B. "stabil, läuft mit Frontend v2.3")
- Status-Übersicht — genutzter Speicher, freier Platz, ältestes/neuestes Backup auf einen Blick
- Cronjob-freundlich —
--quietunterdrückt Output, gibt nur die Backup-ID aus - Als Systembefehl installierbar — einmal
install, danachcheckpointvon überall aufrufbar
bash4+ (Linux-Standard; macOS kommt mit bash 3.2 — ggf.brew install bash)tar,bc,df,du— alles Standard auf Linux-Servern- macOS: Terminal braucht Vollen Festplattenzugriff für geschützte Verzeichnisse
(Systemeinstellungen → Datenschutz & Sicherheit → Voller Festplattenzugriff)
# 1. Repo klonen
git clone https://github.com/yourusername/checkpoint.git
cd checkpoint
# 2. Ausführbar machen
chmod +x backup.sh
# 3. Pfade konfigurieren
cp checkpoint_paths.txt.example checkpoint_paths.txt
nano checkpoint_paths.txt
# 4. (Optional) Als systemweiten Befehl installieren
./backup.sh install
# Eigener Befehlsname möglich
./backup.sh install --cmd checkpointNach der Installation ist checkpoint (oder der gewählte Name) von überall aufrufbar.
checkpoint_paths.txt bearbeiten — ein absoluter Pfad pro Zeile, # für Kommentare:
# Datenbanken
/var/lib/mysql
/var/lib/postgresql/data
# Anwendungsdaten
/opt/myapp/data
Backups werden im Ordner backups/ neben dem Script gespeichert.
Speicherort ändern: BACKUP_ROOT am Anfang von backup.sh anpassen.
checkpoint <befehl> [optionen]
| Befehl | Beschreibung |
|---|---|
checkpoint create |
Neues Backup erstellen |
checkpoint restore <id> |
Backup wiederherstellen (überschreibt aktuellen Stand) |
checkpoint list |
Alle Backups auflisten |
checkpoint status |
Speicher-Übersicht |
checkpoint info <id> |
Details zu einem Backup anzeigen |
checkpoint tag <id> <notiz> |
Notiz zu einem Backup hinzufügen/ändern |
checkpoint delete <id> |
Backup löschen |
checkpoint install [--cmd <n>] |
Als Systembefehl installieren |
checkpoint uninstall [--cmd <n>] |
Systembefehl entfernen |
| Option | Befehl | Beschreibung |
|---|---|---|
--name <label> |
backup |
Lesbares Label für das Backup |
--quiet |
backup, restore |
Kein Output (Cronjob-Modus) |
--cmd <n> |
install, uninstall |
Eigener Befehlsname |
# Backup mit Name erstellen
checkpoint create --name "vor_migration"
# Alle Backups auflisten
checkpoint list
# Speicher-Übersicht
checkpoint status
# Notiz zu einem Backup hinzufügen
checkpoint tag 20260306_143021_vor_migration "getestet, läuft mit v2.3"
# Details anzeigen
checkpoint info 20260306_143021_vor_migration
# Backup wiederherstellen
checkpoint restore 20260306_143021_vor_migration
# Backup löschen
checkpoint delete 20260306_143021_vor_migration# Aktuellen Stand sichern
checkpoint create --name "prod_stabil"
# Neue Version deployen & testen
# ...
# Neue Version auch sichern
checkpoint create --name "neue_version"
# Etwas kaputt? Sofort zurückrollen
checkpoint restore 20260306_120000_prod_stabil
# Neue Version läuft? Altes Backup aufräumen
checkpoint delete 20260306_110000_prod_stabil# Nächtliches Backup um 2 Uhr, Backup-ID wird geloggt
0 2 * * * /opt/checkpoint/backup.sh backup --name "nightly" --quiet >> /var/log/checkpoint.log 2>&1backups/
└── 20260306_143021_vor_migration/
├── backup_info.txt ← Metadaten (Größe, Datum, Notiz, Pfade)
└── archives/
├── var_lib_mysql.tar.gz
└── opt_myapp_data.tar.gz
backup_info.txt Beispiel:
Backup ID : 20260306_143021_vor_migration
Label : vor_migration
Note : getestet, stabil mit Frontend v2.3
Created at : 2026-03-06 14:30:21
Hostname : prod-server-01
User : deploy
--- Paths ---
OK : /var/lib/mysql -> var_lib_mysql.tar.gz (142.30 MB)
OK : /opt/myapp/data -> opt_myapp_data.tar.gz (38.10 MB)
--- Summary ---
Paths OK : 2
Paths FAIL : 0
Total size : 180.40 MB
# Systembefehl entfernen (Script und Backups bleiben erhalten)
checkpoint uninstall
# Mit eigenem Namen
checkpoint uninstall --cmd checkpoint
# Alles vollständig entfernen
rm -rf /pfad/zu/checkpoint/ /pfad/zu/backups/MIT — mach damit was du willst.