Skip to content

conciso/checkpoint

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🗄️ checkpoint

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.


✨ Features

  • 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--quiet unterdrückt Output, gibt nur die Backup-ID aus
  • Als Systembefehl installierbar — einmal install, danach checkpoint von überall aufrufbar

📋 Voraussetzungen

  • bash 4+ (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)

🚀 Installation

# 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 checkpoint

Nach der Installation ist checkpoint (oder der gewählte Name) von überall aufrufbar.


⚙️ Konfiguration

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.


📖 Befehle

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

Optionen

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

💡 Beispiele

# 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

Typischer Datenbank-Workflow

# 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

Cronjob-Beispiel

# 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>&1

📁 Backup-Struktur

backups/
└── 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

🗑️ Deinstallation

# 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/

📄 Lizenz

MIT — mach damit was du willst.

About

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.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages