Zum Inhalt

Backup auf Cloud-Speicher mit rclone und Backblaze B2

rclone ist ein Kommandozeilen-Tool das Dateien mit über 70 Cloud-Providern synchronisieren kann. In dieser Anleitung verwenden wir Backblaze B2 als Ziel – kostenlos bis 10 GB.


1. Backblaze B2 einrichten

  1. Konto erstellen auf backblaze.com (kostenlos)
  2. Im Dashboard: BucketsCreate a Bucket
  3. Bucket name: z.B. m158-backup-vorname
  4. Files in Bucket: Private
  5. Application Key erstellen: B2 Cloud Storage → App KeysAdd a New Application Key
  6. Name: z.B. backup-key
  7. Zugriff nur auf deinen Bucket einschränken
  8. Notiere keyID und applicationKey – das Passwort wird nur einmal angezeigt!

2. rclone installieren

sudo apt install rclone

Version prüfen:

rclone version


3. rclone mit Backblaze B2 konfigurieren

rclone config

Folge dem interaktiven Dialog:

n) New remote
name> backblaze
Storage> b2                         # Backblaze B2
account> DEINE_KEY_ID
key> DEIN_APPLICATION_KEY

Konfiguration testen:

rclone lsd backblaze:

Du solltest deinen Bucket sehen. Dateien im Bucket auflisten:

rclone ls backblaze:m158-backup-vorname


4. rclone im Backup-Skript verwenden

Exitcodes prüfen und Errorlog schreiben

Jeder Befehl gibt einen Exitcode zurück: 0 = Erfolg, alles andere = Fehler. Im Skript prüfst du diesen nach jedem kritischen Schritt:

#!/bin/bash

LOGFILE="/var/log/backup.log"
BUCKET="backblaze:m158-backup-vorname"
BACKUP_DIR="/var/backups/wordpress"
DATE=$(date +"%Y-%m-%d_%H-%M")

log() {
    echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" | tee -a "$LOGFILE"
}

# Backup-Verzeichnis erstellen
mkdir -p "$BACKUP_DIR"

# Datenbank-Backup
log "Starte Datenbank-Backup..."
mysqldump -u root wordpress | gzip > "$BACKUP_DIR/db_$DATE.sql.gz"
if [ $? -ne 0 ]; then
    log "FEHLER: Datenbank-Backup fehlgeschlagen"
    exit 1
fi
log "Datenbank-Backup erfolgreich"

# Datei-Backup
log "Starte Datei-Backup..."
tar -czf "$BACKUP_DIR/files_$DATE.tar.gz" /var/www/html
if [ $? -ne 0 ]; then
    log "FEHLER: Datei-Backup fehlgeschlagen"
    exit 1
fi
log "Datei-Backup erfolgreich"

# Upload zu Backblaze B2
log "Starte Upload zu Backblaze B2..."
rclone copy "$BACKUP_DIR" "$BUCKET" --log-file="$LOGFILE" --log-level INFO
if [ $? -ne 0 ]; then
    log "FEHLER: Upload zu Backblaze fehlgeschlagen"
    exit 1
fi
log "Upload erfolgreich"

# Alte Backups löschen (älter als 7 Tage)
find "$BACKUP_DIR" -type f -mtime +7 -delete
log "Alte Backups bereinigt"

log "Backup abgeschlossen"

Warum $??

$? enthält den Exitcode des letzten ausgeführten Befehls. 0 bedeutet Erfolg, jeder andere Wert ist ein Fehler. Mit if [ $? -ne 0 ] prüfst du ob der vorherige Befehl fehlgeschlagen ist.


5. Skript testen

# Skript ausführbar machen
chmod +x /usr/local/bin/backup.sh

# Manuell ausführen und Log beobachten
bash /usr/local/bin/backup.sh

# Log anzeigen
cat /var/log/backup.log

# Dateien im Bucket prüfen
rclone ls backblaze:m158-backup-vorname

6. Häufige Fehler

Fehler Ursache
Failed to create file system: didn't find section in config rclone Remote nicht konfiguriert oder falscher Name
Error: Access Denied Application Key hat keinen Zugriff auf den Bucket
command not found: rclone rclone nicht installiert oder nicht im PATH
Exitcode 1 beim mysqldump Falscher Datenbankname oder Benutzer ohne Rechte