Rsync für Linux: Synchronisieren, Kopieren und Sichern von Dateien

9 Min. Lesezeit - 24. Mai 2025

hero section cover
Inhaltsverzeichnis
  • Rsync für Linux: So synchronisieren, kopieren und sichern Sie Dateien wie ein Profi
  • Was ist rsync?
  • Warum rsync statt cp oder scp verwenden
  • Gängige rsync-Flags
  • Beispiele für Rsync
  • Automatisierung von rsync mit cron
  • Abschließende Gedanken
Teilen

Wie man rsync unter Linux für inkrementelle Übertragungen, Remote-Synchronisationen über SSH, geplante Backups mit cron und die Vermeidung der Trailing-Slash-Falle verwendet.

Rsync für Linux: So synchronisieren, kopieren und sichern Sie Dateien wie ein Profi

Rsync ist das Standardwerkzeug zum Kopieren von Dateien zwischen Linux-Systemen. Es ist schneller als cp oder scp für alles, was Sie mehr als einmal ausführen, gleicht Netzwerkausfälle aus und überträgt nur das, was sich tatsächlich geändert hat. Dieser Beitrag behandelt, was rsync macht, welche Flags Sie kennen sollten, welche Beispiele Sie am häufigsten verwenden werden und wie Sie es mit cron planen können.


 

Was ist rsync?

Rsync ist ein Befehlszeilenprogramm zum Kopieren und Synchronisieren von Dateien zwischen verschiedenen Standorten. Es funktioniert lokal, über SSH zu einem Remote-Host oder mit einem rsync-Daemon. Der wesentliche Unterschied zu cp oder scp: rsync vergleicht zunächst Quelle und Ziel und überträgt dann nur die Unterschiede. Bei einem 100-GB-Verzeichnis, in dem sich 200 MB geändert haben, verschiebt rsync 200 MB. cp und scp übertragen das gesamte Datenvolumen.

Es ist in jeder modernen Linux-Distribution enthalten. Falls es fehlt: apt install rsync oder dnf install rsync.

Warum rsync statt cp oder scp verwenden

Drei Gründe, warum rsync bei jeder nicht trivialen Kopie die Nase vorn hat:

  • Es arbeitet inkrementell. Bei nachfolgenden Durchläufen werden nur die geänderten Bytes übertragen, nicht ganze Dateien. Bei Backups und Spiegeln verkürzt dies einen nächtlichen Job auf wenige Minuten.
  • Es übersteht Unterbrechungen. Bei --partialwird eine zur Hälfte übertragene 50-GB-Datei an der Stelle fortgesetzt, an der sie unterbrochen wurde, anstatt von vorne zu beginnen.
  • Es bewahrt Metadaten. Der Archivmodus (-a) bewahrt Berechtigungen, Eigentumsrechte, Symlinks und Zeitstempel. Entscheidend für Systemdateien, Quellcode-Verzeichnisse und alles, wo Attribute eine Rolle spielen.

Für einmalige Kopien kleiner Dateien scp ist in Ordnung. Für alles, was wiederholt wird, bandbreitenintensiv ist oder bei dem du die Übertragung fortsetzen musst, verwende rsync.

Gängige rsync-Flags

Die Flags, auf die Sie tatsächlich zurückgreifen werden:

FlagFunktion
-aArchivmodus. Behält Berechtigungen, Eigentumsrechte, Symlinks und Zeitstempel bei. Entspricht -rlptgoD.
-vVerbose. Listet die zu übertragenden Dateien auf.
-zWährend der Übertragung komprimieren. Nützlich bei langsamen oder teuren Verbindungen, weniger nützlich im LAN oder für bereits komprimierte Inhalte.
-PKombiniert --partial und --progress. Unterbrochene Übertragungen fortsetzen, Fortschritt in Echtzeit anzeigen.
--deleteLöscht Dateien am Ziel, die an der Quelle nicht vorhanden sind. Erforderlich für einen echten Spiegel.
--excludeÜberspringe Dateien, die einem Muster entsprechen.
--exclude-from=FILELiest Ausschlussmuster aus einer Datei. Sauberer als die Verkettung vieler --exclude Flags.
--dry-runAnzeigen, was passieren würde, wenn nichts übertragen würde.
--bwlimit=KBPSBandbreitennutzung auf Kilobyte pro Sekunde begrenzen. Nützlich für Backups, die während der Geschäftszeiten laufen.
--checksumDateien anhand der Prüfsumme statt anhand von Größe und Änderungszeit vergleichen. Langsamer, erkennt aber Randfälle.
-e sshVerwende SSH für die Übertragung. Bei den meisten modernen Installationen implizit.

Standardmäßig werden Dateigröße und Änderungszeit verglichen, was schnell und fast immer korrekt ist. Wechseln Sie zu --checksum , wenn ein Bereitstellungsprozess Zeitstempel überschreibt, ohne den Inhalt zu ändern, oder wenn Sie eine Beschädigung auf Bit-Ebene vermuten.

Beispiele für Rsync

Kopieren Sie ein Verzeichnis lokal:

rsync -av /source/path/ /destination/path/

Über SSH mit einem Remote-Server synchronisieren:

rsync -avz /local/dir/ user@remote:/remote/dir/

Testen Sie den Vorgang, bevor Sie etwas Unwiderrufliches tun:

rsync -avz --dry-run /local/dir/ user@remote:/dir/

Zwei Verzeichnisse spiegeln, einschließlich Löschungen am Zielort:

rsync -av --delete /source/ /destination/

Protokolle und ein temporäres Verzeichnis ausschließen:

rsync -av --exclude='*.log' --exclude='tmp/' /src/ /dest/

Eine große Übertragung fortsetzen, die möglicherweise unterbrochen wurde:

rsync -avP user@remote:/backups/big.img /local/

Wenn die SSH-Sitzung unterbrochen wird, denselben Befehl erneut ausführen. Mit -Psetzt rsync dort fort, wo es aufgehört hat, anstatt von vorne zu beginnen.

Begrenze die Bandbreite bei einer Sicherung außerhalb der Spitzenzeiten auf 50 MB/s, damit der Uplink nicht überlastet wird:

rsync -avz --bwlimit=50000 /local/dir/ user@remote:/dir/

Die Tücken des abschließenden Schrägstrichs

Der häufigste Fehler bei rsync:

rsync -av /source  /destination/    # copies the 'source' directory INTO /destination
rsync -av /source/ /destination/    # copies the CONTENTS of /source into /destination

Ein abschließender Schrägstrich am Quellpfad bedeutet „alles in diesem Verzeichnis“. Kein abschließender Schrägstrich bedeutet „dieses Verzeichnis selbst“. Verwenden Sie --dry-run erstes, wenn du dir unsicher bist, insbesondere in Kombination mit --delete.

Automatisierung von rsync mit cron

Für geplante Backups benötigen Sie drei Dinge:

  1. Passwortlosen SSH-Zugriff auf das Ziel. Cron-Jobs können keine Passwörter eingeben. Erstellen Sie einen Schlüssel und kopieren Sie ihn auf den Backup-Host:

    ssh-keygen -t ed25519
    ssh-copy-id user@backup-host
  2. Ein Skript, kein Einzeiler in crontab. Einfacher zu testen, einfacher zu protokollieren:

    #!/bin/bash
    LOG=/var/log/rsync-backup.log
    rsync -az --delete /etc/ user@backup:/backups/$(hostname)/etc/ >> "$LOG" 2>&1

    Machen Sie es ausführbar mit chmod +x.

  3. Ein Cron-Eintrag, um es auszuführen. Bearbeite es mit crontab -e:

    0 2 * * * /usr/local/bin/rsync-backup.sh

    Dadurch wird das Skript jede Nacht um 02:00 Uhr ausgeführt.

Zwei Verbesserungen, die in der Produktion sinnvoll sind: Umschließen Sie das Skript mit flock , damit sich ein lang laufender Job nicht mit dem Lauf der nächsten Nacht überschneidet, und leiten Sie die Ausgabe über logger , damit Fehler im Systemprotokoll landen, wo sie von der Überwachung erfasst werden können.

Abschließende Gedanken

Rsync ist eines der wenigen Linux-Tools, bei denen sich die Zeit, die man in das Erlernen der Flags investiert, fast sofort auszahlt. Die wichtigsten Punkte:

  • Inkrementelle Übertragungen und die Unterstützung für die Wiederaufnahme machen rsync zur richtigen Wahl für alles, was Sie mehr als einmal ausführen
  • -a im Archivmodus -z für die Komprimierung, -P für die Wiederaufnahme und den Fortschrittsanzeige, --delete für echte Spiegel
  • Achten Sie auf den abschließenden Schrägstrich im Quellpfad, insbesondere bei --delete
  • Kombinieren Sie dies mit Cron und SSH-Schlüsseln für automatisierte, geplante Backups

Bei großen Backup-Aufträgen, bei denen Daten zwischen Standorten verschoben werden, bedeutet die Ausführung von rsync auf einem VPS mit unbegrenzter Bandbreite, dass Backup-Fenster nicht durch Übertragungsbeschränkungen eingeschränkt werden.

Blog

Diese Woche im Blickpunkt

Weitere Artikel
Warum es wichtig ist, einen leistungsstarken und ungemessenen VPS zu haben

Warum es wichtig ist, einen leistungsstarken und ungemessenen VPS zu haben

Ein ungemessener VPS bietet eine pauschale Bandbreite mit einer festen Portgeschwindigkeit. Wie er sich von gebührenpflichtigen Tarifen unterscheidet, wann er sich lohnt und worauf Sie vor dem Kauf achten sollten.

7 Min. Lesezeit - 9. Mai 2025

Linux-Speicherverwaltung: Swap, OOM Killer & Cgroups

12 Min. Lesezeit - 31. Mai 2026

Weitere Artikel
background image

Haben Sie Fragen oder benötigen Sie eine individuelle Lösung?

icon

Flexible Optionen

icon

Globale Reichweite

icon

Sofortige Bereitstellung

icon

Flexible Optionen

icon

Globale Reichweite

icon

Sofortige Bereitstellung