Dedicated Servers & VPS19. Januar 2026 62 Aufrufe

Rclone: Expertenleitfaden für die Cloud-Synchronisierung auf VPS Linux

Rclone: Expertenleitfaden für die Cloud-Synchronisierung auf VPS Linux

Was ist Rclone?

Rclone ist ein Open-Source-Befehlszeilentool zur Verwaltung von Dateien auf über 70 Cloud-Speicherdiensten. Oft als "rsync für die Cloud" bezeichnet, bietet es erweiterte Funktionen für Synchronisierung, Übertragung, Verschlüsselung und Einbindung entfernter Dateisysteme.

Interne Architektur

Rclone arbeitet nach einem modularen Aufbau mit mehreren Schichten. Im Kern befindet sich der Rclone Core, der grundlegende Operationen verwaltet. Darüber interagieren drei Hauptebenen: die VFS-Schicht für Einbindung und Cache, die Crypt-Schicht für die Client-seitige Verschlüsselung und die Chunker-Schicht für die Aufteilung großer Dateien.

Diese Schichten kommunizieren mit einer Backend-Abstraktion, die den Zugriff auf verschiedene Anbieter wie S3/R2, Google Drive, SFTP, Backblaze B2, WebDAV und viele andere vereinheitlicht.

Systemvoraussetzungen

Komponente Minimum Empfohlen
RAM 512 MB 2 GB+
CPU 1 vCPU 2+ vCPU
Speicher 100 MB 1 GB (Cache)
Kernel 3.10+ 5.4+ (FUSE3)
OS Ubuntu 18.04+ Ubuntu 22.04/24.04

Erweiterte Installation

Methode 1: Installation über Offizielles Skript (Empfohlen)

# Installation mit Signaturüberprüfung
curl -fsSL https://rclone.org/install.sh | sudo bash

# Installation überprüfen
rclone version

Methode 2: Manuelle Installation (Vollständige Kontrolle)

# Gewünschte Version festlegen
RCLONE_VERSION="v1.68.2"
ARCH="amd64"  # oder arm64 für ARM

# Herunterladen und Entpacken
cd /tmp
curl -LO "https://downloads.rclone.org/${RCLONE_VERSION}/rclone-${RCLONE_VERSION}-linux-${ARCH}.zip"
unzip rclone-${RCLONE_VERSION}-linux-${ARCH}.zip
cd rclone-${RCLONE_VERSION}-linux-${ARCH}

# Binäre Installation
sudo cp rclone /usr/local/bin/
sudo chmod 755 /usr/local/bin/rclone

# Man-Seiten installieren
sudo mkdir -p /usr/local/share/man/man1
sudo cp rclone.1 /usr/local/share/man/man1/
sudo mandb

# Bash-Autovervollständigung installieren
rclone completion bash | sudo tee /etc/bash_completion.d/rclone > /dev/null

# Zsh-Autovervollständigung installieren
rclone completion zsh | sudo tee /usr/local/share/zsh/site-functions/_rclone > /dev/null

Methode 3: Kompilieren aus den Quellen

# Voraussetzungen Go 1.21+
sudo apt update && sudo apt install -y golang-go git

# Klonen und kompilieren
git clone https://github.com/rclone/rclone.git
cd rclone
go build -ldflags "-s -w" -o rclone

# Installation
sudo mv rclone /usr/local/bin/

Installation der FUSE-Abhängigkeiten

# Ubuntu/Debian
sudo apt update
sudo apt install -y fuse3 libfuse3-dev

# FUSE für nicht-root-Benutzer aktivieren
sudo sed -i 's/#user_allow_other/user_allow_other/' /etc/fuse.conf

Multi-Provider-Konfiguration

Struktur der Konfigurationsdatei

Die Standardkonfigurationsdatei befindet sich unter ~/.config/rclone/rclone.conf. Ihre INI-Struktur unterstützt mehrere Remotes.

# ~/.config/rclone/rclone.conf

[gdrive]
type = drive
client_id = IHRE_CLIENT_ID.apps.googleusercontent.com
client_secret = IHR_CLIENT_SECRET
scope = drive
token = {"access_token":"...","token_type":"Bearer","refresh_token":"...","expiry":"..."}
team_drive = 

[s3-aws]
type = s3
provider = AWS
access_key_id = AKIAIOSFODNN7EXAMPLE
secret_access_key = wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
region = eu-west-1
acl = private
storage_class = STANDARD_IA

[s3-r2]
type = s3
provider = Cloudflare
access_key_id = IHR_R2_ACCESS_KEY
secret_access_key = IHR_R2_SECRET_KEY
endpoint = https://IHR_ACCOUNT_ID.r2.cloudflarestorage.com
acl = private

[b2]
type = b2
account = IHR_ANWENDUNGS_SCHLÜSSEL_ID
key = IHR_ANWENDUNGS_SCHLÜSSEL
hard_delete = true

[sftp-backup]
type = sftp
host = backup.example.com
user = backupuser
port = 22
key_file = ~/.ssh/backup_key
shell_type = unix
md5sum_command = md5sum
sha1sum_command = sha1sum

Interaktive Konfiguration

# Konfigurationsassistent starten
rclone config

# Befehle im interaktiven Menü
# n) Neues Remote
# d) Remote löschen
# r) Remote umbenennen
# c) Remote kopieren
# s) Konfigurationspasswort festlegen
# q) Konfiguration beenden

Google Drive-Konfiguration (Headless VPS)

Um Google Drive auf einem VPS ohne grafische Benutzeroberfläche zu konfigurieren:

# Auf Ihrem lokalen Rechner mit Browser
rclone authorize "drive"

# Generierten Token kopieren und dann auf dem VPS
rclone config

# Auswählen: n (neues Remote)
# Name: gdrive
# Speicher: drive
# client_id: (leer lassen oder Ihren eigenen verwenden)
# client_secret: (leer lassen oder Ihren eigenen verwenden)
# scope: drive
# service_account_file: (leer lassen)
# Erweiterte Konfiguration bearbeiten: n
# Automatische Konfiguration verwenden: n
# Den auf dem lokalen Rechner erhaltenen Token einfügen

Konfiguration mit Service Account (Google Workspace)

# Verzeichnis für die Anmeldeinformationen erstellen
mkdir -p ~/.config/rclone/sa

# JSON-Datei des Service Accounts platzieren
# ~/.config/rclone/sa/service-account.json
[gdrive-sa]
type = drive
scope = drive
service_account_file = /home/user/.config/rclone/sa/service-account.json
team_drive = 0ABCdefGHIjklMNOpqr

Konfiguration S3-kompatibel (MinIO, Wasabi, etc.)

[minio]
type = s3
provider = Minio
access_key_id = minioadmin
secret_access_key = minioadmin
endpoint = http://localhost:9000
acl = private

[wasabi]
type = s3
provider = Wasabi
access_key_id = IHR_WASABI_SCHLÜSSEL
secret_access_key = IHR_WASABI_SECRET
region = eu-central-1
endpoint = s3.eu-central-1.wasabisys.com

Grundlegende Befehle

Allgemeine Syntax

rclone [Optionen] Unterbefehl <Quelle> [<Ziel>] [Flags]

Grundbefehle

Auflisten und Navigieren

# Konfigurierte Remotes auflisten
rclone listremotes

# Inhalt eines Remotes auflisten
rclone ls gdrive:
rclone ls gdrive:Dokumente/

# Detaillierte Liste mit Größe und Datum
rclone lsl gdrive:

# JSON-Format (für Skripting)
rclone lsjson gdrive: --recursive

# Nur Verzeichnisse anzeigen
rclone lsd gdrive:

# Vollständige Baumstruktur
rclone tree gdrive:Projekte/ --level 3

# Dateien suchen
rclone ls gdrive: --include "*.pdf" --recursive

Kopieren und Verschieben

# Lokale Datei zu Remote kopieren
rclone copy /lokaler/pfad gdrive:sicherung/ -P

# Remote zu lokaler Kopie
rclone copy gdrive:Dokumente/ /lokale/dokumente/ -P

# Kopieren zwischen zwei Remotes (serverseitig, wenn unterstützt)
rclone copy gdrive:quelle/ s3-aws:ziel/ -P

# Verschieben (Kopieren + Quelle löschen)
rclone move /lokaler/temp/ gdrive:archiv/ -P

# Einzelne Datei kopieren
rclone copyto /lokale/datei.txt gdrive:sicherung/datei.txt

Synchronisierung

# Einweg-Synchronisierung (Quelle → Ziel)
# ACHTUNG: Löscht Dateien im Ziel, die nicht in der Quelle vorhanden sind
rclone sync /lokale/daten/ gdrive:daten/ -P

# Synchronisation mit Dry-Run (Simulation)
rclone sync /lokale/daten/ gdrive:daten/ --dry-run

# Bidirektionale Synchronisation (experimentell)
rclone bisync /lokale/daten/ gdrive:daten/ --resync

Löschen

# Datei löschen
rclone deletefile gdrive:path/to/file.txt

# Verzeichnis und Inhalt löschen
rclone purge gdrive:old-backup/

# Nur Dateien löschen (Struktur beibehalten)
rclone delete gdrive:temp/

# Leere Dateien löschen
rclone rmdirs gdrive: --leave-root

Wesentliche Flags

Flag Beschreibung
-P, --progress Fortschritt anzeigen
-v, --verbose Verbose Modus
-n, --dry-run Simulation ohne Änderungen
--transfers N Anzahl paralleler Übertragungen
--checkers N Anzahl paralleler Prüfer
--bwlimit RATE Bandbreitenbegrenzung
--exclude PATTERN Dateien ausschließen
--include PATTERN Nur diese Dateien einschließen
--min-size SIZE Minimale Größe
--max-size SIZE Maximale Größe
--min-age DURATION Minimales Alter
--max-age DURATION Maximales Alter

Erweiterte Operationen

Erweiterte Filterung

# Filterdatei
cat > /etc/rclone/filters.txt << 'EOF'
# Einschlüsse
+ **.pdf
+ **.docx
+ Documents/**

# Ausschlüsse
- *.tmp
- *.log
- .git/**
- node_modules/**
- __pycache__/**
- .DS_Store
- Thumbs.db

# Dateien über 1 GB ausschließen
- *
EOF

# Verwendung der Filterdatei
rclone sync /data/ gdrive:backup/ --filter-from /etc/rclone/filters.txt -P

Serverseitige Operationen

# Serverseitige Kopie (lokales Herunterladen vermeiden)
rclone copy gdrive:source/ gdrive:destination/ --drive-server-side-across-configs

# Überprüfen der Verfügbarkeit von serverseitigen Funktionen
rclone backend features gdrive:

# Deduplizierung (Google Drive)
rclone dedupe gdrive:folder/ --dedupe-mode newest

Verwaltung großer Dateien

# Chunked Upload für Dateien > 5GB (S3)
rclone copy largefile.tar gdrive:backup/ \
  --s3-chunk-size 100M \
  --s3-upload-concurrency 4

# Integritätsprüfung
rclone check /local/data/ gdrive:data/ --one-way
rclone hashsum MD5 gdrive:file.zip

Metadatenoperationen

# Kopieren mit Zeitstempelerhaltung
rclone copy /local/ gdrive:backup/ --metadata

# Metadaten anzeigen
rclone lsjson gdrive:file.txt --metadata

# Metadaten ändern (unterstützte Backends)
rclone settier gdrive:file.txt ARCHIVE

FUSE-Mount und Cache

Grundmontage

# Mountpoint erstellen
sudo mkdir -p /mnt/gdrive
sudo chown $USER:$USER /mnt/gdrive

# Einfaches Mounten
rclone mount gdrive: /mnt/gdrive --daemon

# Mounten mit erweiterten Optionen
rclone mount gdrive: /mnt/gdrive \
  --daemon \
  --allow-other \
  --vfs-cache-mode full \
  --vfs-cache-max-size 10G \
  --vfs-cache-max-age 24h \
  --vfs-read-chunk-size 64M \
  --vfs-read-chunk-size-limit 1G \
  --buffer-size 256M \
  --dir-cache-time 72h \
  --poll-interval 15s \
  --log-file /var/log/rclone/gdrive.log \
  --log-level INFO

VFS-Cache-Modi

Modus Beschreibung Verwendung
off Kein Cache Nur Streaming
minimal Nur Schreibcache Uploads
writes Schreibt Cache bis zum Upload Dateibearbeitung
full Vollständiger Lese-/Schreibcache Intensiv genutzt, Anwendungen

Erweiterte Cache-Konfiguration

# Cache mit dediziertem Backend
rclone mount gdrive: /mnt/gdrive \
  --vfs-cache-mode full \
  --cache-dir /var/cache/rclone \
  --vfs-cache-max-size 50G \
  --vfs-cache-max-age 168h \
  --vfs-write-back 5s \
  --vfs-read-ahead 128M \
  --attr-timeout 1h \
  --daemon

Systemd-Service für persistente Montage

# Service-Datei erstellen
sudo tee /etc/systemd/system/rclone-gdrive.service << 'EOF'
[Unit]
Description=Rclone Mount - Google Drive
Documentation=https://rclone.org/docs/
After=network-online.target
Wants=network-online.target

[Service]
Type=notify
User=rclone
Group=rclone
ExecStartPre=/bin/mkdir -p /mnt/gdrive
ExecStart=/usr/local/bin/rclone mount gdrive: /mnt/gdrive \
  --config /home/rclone/.config/rclone/rclone.conf \
  --allow-other \
  --vfs-cache-mode full \
  --vfs-cache-max-size 20G \
  --vfs-cache-max-age 72h \
  --vfs-read-chunk-size 32M \
  --vfs-read-chunk-size-limit 256M \
  --buffer-size 128M \
  --dir-cache-time 48h \
  --poll-interval 30s \
  --log-level INFO \
  --log-file /var/log/rclone/gdrive.log \
  --cache-dir /var/cache/rclone/gdrive
ExecStop=/bin/fusermount -uz /mnt/gdrive
Restart=on-failure
RestartSec=10

[Install]
WantedBy=multi-user.target
EOF

# Dedizierten Benutzer erstellen
sudo useradd -r -s /usr/sbin/nologin rclone
sudo mkdir -p /var/log/rclone /var/cache/rclone
sudo chown rclone:rclone /var/log/rclone /var/cache/rclone

# Service aktivieren und starten
sudo systemctl daemon-reload
sudo systemctl enable rclone-gdrive.service
sudo systemctl start rclone-gdrive.service

# Status überprüfen
sudo systemctl status rclone-gdrive.service

Demontage

# Saubere Demontage
fusermount -u /mnt/gdrive

# Erzwungene Demontage (bei Blockierung)
fusermount -uz /mnt/gdrive

# Über systemd
sudo systemctl stop rclone-gdrive.service

Verschlüsselung und Sicherheit

Konfiguration eines verschlüsselten Remotes

Das Backend crypt bietet transparente clientseitige Verschlüsselung.

# Konfiguration über Assistenten
rclone config

# Auswählen: n (neues Remote)
# Name: gdrive-crypt
# Speicher: crypt
# Remote: gdrive:encrypted/ (unterliegendes Remote)
# filename_encryption: standard
# directory_name_encryption: true
# password: (generiert oder gewählt)
# password2: (Salt, optional aber empfohlen)

Ergebnis der Konfiguration:

[gdrive-crypt]
type = crypt
remote = gdrive:encrypted/
password = ENCRYPTED_PASSWORD_HASH
password2 = ENCRYPTED_SALT_HASH
filename_encryption = standard
directory_name_encryption = true

Verschlüsselungsmodi für Dateinamen

Modus Beschreibung Beispiel
off Keine Dateinamensverschlüsselung document.pdf
standard Vollständige Verschlüsselung q4kp2q8fj3m2...
obfuscate Einfache Verschleierung yqkpzqFfj3m2...

Verwendung des verschlüsselten Remotes

# Operationen sind transparent
rclone copy /sensitive/data/ gdrive-crypt: -P

# Dateien erscheinen verschlüsselt in der Cloud
rclone ls gdrive:encrypted/
# Ausgabe: verschlüsselt und unleserlich

# Aber lesbar über das verschlüsselte Remote
rclone ls gdrive-crypt:
# Ausgabe: Originalnamen

Konfigurationssicherheit

# Konfigurieren des Konfigurationsdateipassworts
rclone config password

# Die Konfiguration verwendet nun ein Passwort
# Über Umgebungsvariable festlegen
export RCLONE_CONFIG_PASS="Ihr_starkes_Passwort"

# Oder einen Secrets Manager verwenden
export RCLONE_CONFIG_PASS=$(cat /run/secrets/rclone_pass)

Sensible Umgebungsvariablen

# Konfiguration über Variablen (vermeidet Konfigurationsdatei)
export RCLONE_CONFIG_GDRIVE_TYPE=drive
export RCLONE_CONFIG_GDRIVE_TOKEN='{"access_token":"..."}'

# Für S3
export RCLONE_CONFIG_S3_TYPE=s3
export RCLONE_CONFIG_S3_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE
export RCLONE_CONFIG_S3_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG

Automatisierung und Skripting

Vollständiges Backup-Skript

#!/usr/bin/env bash
#
# rclone-backup.sh - Automatisiertes Sicherungsskript
# Verwendung: ./rclone-backup.sh [täglich|wöchentlich|monatlich]
#

set -euo pipefail
IFS=$'\n\t'

# Konfiguration
readonly SCRIPT_NAME=$(basename "$0")
readonly LOG_DIR="/var/log/rclone"
readonly LOG_FILE="${LOG_DIR}/backup-$(date +%Y%m%d-%H%M%S).log"
readonly LOCK_FILE="/var/run/rclone-backup.lock"
readonly CONFIG_FILE="${HOME}/.config/rclone/rclone.conf"

# Parameter
readonly LOCAL_SOURCE="/data"
readonly REMOTE_DEST="gdrive-crypt:backups"
readonly RETENTION_DAYS=30
readonly BANDWIDTH_LIMIT="50M"
readonly MAX_TRANSFERS=4

# Farben
readonly RED='\033[0;31m'
readonly GREEN='\033[0;32m'
readonly YELLOW='\033[1;33m'
readonly NC='\033[0m'

# Funktionen
log() {
    local level="$1"
    shift
    local message="$*"
    local timestamp=$(date '+%Y-%m-%d %H:%M:%S')
    echo -e "${timestamp} [${level}] ${message}" | tee -a "${LOG_FILE}"
}

cleanup() {
    rm -f "${LOCK_FILE}"
    log "INFO" "Reinigung abgeschlossen, Sperre freigegeben"
}

check_dependencies() {
    local deps=("rclone" "flock")
    for dep in "${deps[@]}"; do
        if ! command -v "$dep" &> /dev/null; then
            log "ERROR" "Fehlende Abhängigkeit: $dep"
            exit 1
        fi
    done
}

acquire_lock() {
    exec 200>"${LOCK_FILE}"
    if ! flock -n 200; then
        log "ERROR" "Eine andere Instanz läuft bereits"
        exit 1
    fi
}

perform_backup() {
    local backup_type="${1:-täglich}"
    local timestamp=$(date +%Y%m%d-%H%M%S)
    local dest_path="${REMOTE_DEST}/${backup_type}/${timestamp}"
    
    log "INFO" "Starte Backup ${backup_type} nach ${dest_path}"
    
    rclone sync "${LOCAL_SOURCE}" "${dest_path}" \
        --config "${CONFIG_FILE}" \
        --transfers "${MAX_TRANSFERS}" \
        --checkers 8 \
        --bwlimit "${BANDWIDTH_LIMIT}" \
        --log-file "${LOG_FILE}" \
        --log-level INFO \
        --stats 1m \
        --stats-log-level NOTICE \
        --exclude-from /etc/rclone/exclude.txt \
        --backup-dir "${REMOTE_DEST}/.versions/${timestamp}" \
        --suffix ".bak" \
        --fast-list \
        --retries 3 \
        --retries-sleep 10s \
        --ignore-errors
        
    local exit_code=$?
    
    if [ $exit_code -eq 0 ]; then
        log "INFO" "${GREEN}Backup ${backup_type} erfolgreich abgeschlossen${NC}"
    else
        log "ERROR" "${RED}Backup ${backup_type} fehlgeschlagen (Code: ${exit_code})${NC}"
    fi
    
    return $exit_code
}

cleanup_old_backups() {
    log "INFO" "Lösche Backups älter als ${RETENTION_DAYS} Tage"
    
    rclone delete "${REMOTE_DEST}" \
        --config "${CONFIG_FILE}" \
        --min-age "${RETENTION_DAYS}d" \
        --rmdirs \
        --log-file "${LOG_FILE}" \
        --log-level INFO
        
    log "INFO" "Löschen abgeschlossen"
}

send_notification() {
    local status="$1"
    local message="$2"
    
    # Beispiel mit Discord/Slack-Webhook
    if [ -n "${WEBHOOK_URL:-}" ]; then
        curl -s -X POST "${WEBHOOK_URL}" \
            -H "Content-Type: application/json" \
            -d "{\"content\": \"[Rclone Backup] ${status}: ${message}\"}"
    fi
}

main() {
    local backup_type="${1:-täglich}"
    
    # Initialisierung
    mkdir -p "${LOG_DIR}"
    trap cleanup EXIT
    
    log "INFO" "=== Starte ${SCRIPT_NAME} (${backup_type}) ==="
    
    check_dependencies
    acquire_lock
    
    # Ausführung
    if perform_backup "${backup_type}"; then
        cleanup_old_backups
        send_notification "ERFOLG" "Backup ${backup_type} abgeschlossen"
    else
        send_notification "FEHLER" "Backup ${backup_type} fehlgeschlagen"
        exit 1
    fi
    
    log "INFO" "=== Ende ${SCRIPT_NAME} ==="
}

main "$@"

Cron-Konfiguration

# Crontab bearbeiten
crontab -e

# Automatisierte Backups
# Täglich um 2:00 Uhr
0 2 * * * /usr/local/bin/rclone-backup.sh täglich >> /var/log/rclone/cron.log 2>&1

# Wöchentlich sonntags um 3:00 Uhr
0 3 * * 0 /usr/local/bin/rclone-backup.sh wöchentlich >> /var/log/rclone/cron.log 2>&1

# Monatlich am 1. des Monats um 4:00 Uhr
0 4 1 * * /usr/local/bin/rclone-backup.sh monatlich >> /var/log/rclone/cron.log 2>&1

# Cache-Bereinigung täglich um 5:00 Uhr
0 5 * * * /usr/local/bin/rclone cleanup gdrive: --config /home/user/.config/rclone/rclone.conf

Systemd-Timer (Alternative zu Cron)

# Service
sudo tee /etc/systemd/system/rclone-backup.service << 'EOF'
[Unit]
Description=Rclone Backup Service
After=network-online.target

[Service]
Type=oneshot
User=rclone
ExecStart=/usr/local/bin/rclone-backup.sh täglich
StandardOutput=journal
StandardError=journal
EOF

# Timer
sudo tee /etc/systemd/system/rclone-backup.timer << 'EOF'
[Unit]
Description=Führe Rclone Backup täglich aus

[Timer]
OnCalendar=*-*-* 02:00:00
RandomizedDelaySec=300
Persistent=true

[Install]
WantedBy=timers.target
EOF

# Aktivierung
sudo systemctl daemon-reload
sudo systemctl enable --now rclone-backup.timer

# Überprüfung
systemctl list-timers | grep rclone

Leistungsoptimierung

Transfer-Tuning

# Hochleistungskonfiguration
rclone sync /quelle/ remote:ziel/ \
  --transfers 16 \
  --checkers 32 \
  --buffer-size 512M \
  --drive-chunk-size 256M \
  --fast-list \
  --tpslimit 10 \
  --tpslimit-burst 20 \
  -P

Provider-spezifische Einstellungen

Google Drive

# Google Drive-Optimierung
rclone copy /data/ gdrive:backup/ \
  --drive-chunk-size 256M \
  --drive-upload-cutoff 256M \
  --drive-acknowledge-abuse \
  --drive-keep-revision-forever=false \
  --fast-list \
  -P

Amazon S3

# S3-Optimierung
rclone copy /data/ s3:eimer/pfad/ \
  --s3-chunk-size 100M \
  --s3-upload-cutoff 200M \
  --s3-upload-concurrency 8 \
  --s3-copy-cutoff 4G \
  --fast-list \
  -P

Backblaze B2

# B2-Optimierung
rclone copy /data/ b2:eimer/pfad/ \
  --b2-chunk-size 96M \
  --b2-upload-cutoff 200M \
  --b2-hard-delete \
  --fast-list \
  -P

Benchmarking

# Geschwindigkeitstest
rclone test makefile /tmp/rclone_test_file --size 1G

# Vollständiger Benchmark
rclone test memory remote:path/
rclone test bandwidth remote:path/ --time 30s

# Transfer messen
time rclone copy /test/1GB.bin remote:test/ -P --stats 1s

Bandbreitenmanagement

# Feste Begrenzung
--bwlimit 10M

# Zeitgesteuerte Begrenzung
--bwlimit "08:00,512K 18:00,10M 23:00,off"

# Getrennte Upload-/Download-Begrenzung
--bwlimit "10M:5M"  # 10M up, 5M down

Überwachung und Protokollierung

Log-Konfiguration

# Log Levels
--log-level DEBUG    # Very verbose
--log-level INFO     # Standard
--log-level NOTICE   # Important only
--log-level ERROR    # Errors only

# Output file
--log-file /var/log/rclone/operation.log

# JSON format (for parsing)
--use-json-log

Detaillierte Statistiken

# Periodische Statistiken
rclone sync /source/ remote:dest/ \
  --stats 30s \
  --stats-file-name-length 0 \
  --stats-log-level NOTICE \
  --stats-one-line \
  -P

Überwachung mit Prometheus

# Metriken aktivieren
rclone serve restic remote:path/ \
  --rc \
  --rc-addr :5572 \
  --rc-enable-metrics

# Prometheus-Endpunkt
curl http://localhost:5572/metrics

Überwachungsskript

#!/usr/bin/env bash
# rclone-health-check.sh

REMOTE="gdrive:"
LOG_FILE="/var/log/rclone/health.log"

check_remote() {
    if rclone lsd "${REMOTE}" --max-depth 1 &> /dev/null; then
        echo "$(date '+%Y-%m-%d %H:%M:%S') [OK] ${REMOTE} zugänglich" >> "${LOG_FILE}"
        return 0
    else
        echo "$(date '+%Y-%m-%d %H:%M:%S') [FAIL] ${REMOTE} nicht erreichbar" >> "${LOG_FILE}"
        return 1
    fi
}

check_mount() {
    local mount_point="/mnt/gdrive"
    if mountpoint -q "${mount_point}"; then
        echo "$(date '+%Y-%m-%d %H:%M:%S') [OK] ${mount_point} gemountet" >> "${LOG_FILE}"
        return 0
    else
        echo "$(date '+%Y-%m-%d %H:%M:%S') [FAIL] ${mount_point} nicht gemountet" >> "${LOG_FILE}"
        return 1
    fi
}

check_remote
check_mount

Logrotate-Konfiguration

sudo tee /etc/logrotate.d/rclone << 'EOF'
/var/log/rclone/*.log {
    daily
    missingok
    rotate 14
    compress
    delaycompress
    notifempty
    create 0640 rclone rclone
    sharedscripts
    postrotate
        systemctl reload rclone-gdrive.service > /dev/null 2>&1 || true
    endscript
}
EOF

Expertenfehlerbehebung

Gängige Probleme und Lösungen

Fehler 403 - Rate Limit (Google Drive)

# Symptom
ERROR : Failed to copy: googleapi: Error 403: User Rate Limit Exceeded

# Lösungen
# 1. Reduzieren der Parallelität
--transfers 2 --checkers 4

# 2. Verzögerungen hinzufügen
--tpslimit 2 --tpslimit-burst 0

# 3. Verwenden Sie Ihre eigene Client-ID
# In rclone config, benutzerdefinierte client_id und client_secret setzen

Token abgelaufen Fehler

# Token neu generieren
rclone config reconnect gdrive:

# Oder manuell
rclone authorize drive

FUSE-Montage - Berechtigungsverweigerung

# Überprüfen von /etc/fuse.conf
grep user_allow_other /etc/fuse.conf

# Wenn auskommentiert, aktivieren
sudo sed -i 's/#user_allow_other/user_allow_other/' /etc/fuse.conf

# --allow-other verwenden
rclone mount remote: /mnt/point --allow-other

Fehlende Dateien nach Sync

# Immer zuerst eine Trockenübung machen
rclone sync source: dest: --dry-run

# Überprüfen von Ausschlüssen
rclone ls source: --include "*.ext" -v

# Verwenden von check zum Vergleichen
rclone check source: dest: --one-way --combined report.txt

Erweiterte Diagnose

# Vollständiger Debug-Modus
rclone copy source: dest: -vv --dump headers --dump bodies

# Verbindung testen
rclone lsd remote: --timeout 30s

# Konfiguration überprüfen
rclone config show remote

# Backends und Features auflisten
rclone backend features remote:

# Netzwerk-Performance-Test
rclone test bandwidth remote: --time 30s

Fehlerwiederherstellung

# Fortsetzen eines unterbrochenen Transfers
rclone copy source: dest: \
  --retries 10 \
  --retries-sleep 30s \
  --low-level-retries 20 \
  --ignore-errors

# Fehlerhafte Dateien separat behandeln
rclone copy source: dest: \
  --error-on-no-transfer \
  2>&1 | tee transfer.log

# Nur Fehler erneut abspielen
grep "ERROR" transfer.log | while read line; do
    # Extrahieren und erneut verarbeiten
done

Produktionsanwendungsfälle

Vollständiges Webserver-Backup

#!/usr/bin/env bash
# backup-webserver.sh

# Variablen
MYSQL_USER="backup"
MYSQL_PASS="secret"
BACKUP_DIR="/var/backups/web"
REMOTE="b2:webserver-backups"
DATE=$(date +%Y%m%d)

# Backup-Verzeichnis erstellen
mkdir -p "${BACKUP_DIR}/${DATE}"

# 1. MySQL-Backup
mysqldump -u${MYSQL_USER} -p${MYSQL_PASS} --all-databases \
    | gzip > "${BACKUP_DIR}/${DATE}/mysql-all.sql.gz"

# 2. Webdateien-Backup
tar -czf "${BACKUP_DIR}/${DATE}/www.tar.gz" -C /var/www .

# 3. Konfigurations-Backup
tar -czf "${BACKUP_DIR}/${DATE}/etc.tar.gz" \
    /etc/nginx /etc/php /etc/mysql /etc/letsencrypt

# 4. In die Cloud hochladen
rclone copy "${BACKUP_DIR}/${DATE}" "${REMOTE}/${DATE}/" \
    --transfers 4 \
    --b2-hard-delete \
    -P

# 5. Lokale Bereinigung (7 Tage behalten)
find "${BACKUP_DIR}" -type d -mtime +7 -exec rm -rf {} +

# 6. Remote-Bereinigung (30 Tage behalten)
rclone delete "${REMOTE}" --min-age 30d --rmdirs

Multi-Cloud-Synchronisierung

#!/usr/bin/env bash
# multi-cloud-sync.sh - Replikation auf mehreren Anbietern

QUELLEN=("gdrive:wichtig" "s3:eimer/wichtig")
ZIELE=("b2:redundanz" "wasabi:redundanz")

for src in "${QUELLEN[@]}"; do
    for dst in "${ZIELE[@]}"; do
        echo "Synchronisierung ${src} -> ${dst}"
        rclone sync "${src}" "${dst}" \
            --transfers 8 \
            --fast-list \
            --checksum \
            -P
    done
done

Media-Server mit Rclone Mount

# Konfiguration für Plex/Jellyfin
rclone mount gdrive:Media /mnt/media \
    --daemon \
    --allow-other \
    --uid $(id -u plex) \
    --gid $(id -g plex) \
    --umask 002 \
    --vfs-cache-mode full \
    --vfs-cache-max-size 100G \
    --vfs-cache-max-age 168h \
    --vfs-read-chunk-size 128M \
    --vfs-read-chunk-size-limit 1G \
    --buffer-size 512M \
    --dir-cache-time 168h \
    --poll-interval 1m \
    --log-file /var/log/rclone/media.log \
    --log-level NOTICE \
    --cache-dir /var/cache/rclone/media

Archivierung mit Versionierung

# Sync mit Versionserhaltung
rclone sync /data/ remote:current/ \
    --backup-dir remote:versions/$(date +%Y%m%d) \
    --suffix .bak \
    --suffix-keep-extension \
    -P

# Wiederherstellung einer Version
rclone copy remote:versions/20240115/file.txt.bak /restore/file.txt

Ressourcen und Referenzen

Offizielle Dokumentation

Nützliche Schnellbefehle

# Überprüfen des verwendeten Speicherplatzes
rclone size remote:path/

# Bereinigen von temporären Dateien
rclone cleanup remote:

# Mit Webinterface mounten
rclone rcd --rc-web-gui --rc-addr :5572

# Konfiguration exportieren (ohne Geheimnisse)
rclone config dump | jq 'del(..|.token?, .password?, .secret_access_key?)'