Hosten Sie Ihren eigenen KI-Agenten mit OpenClaw - kostenlose 1-Klick-Installation!

rsync-Befehl in Linux: Optionen, Beispiele, SSH

rsync-Befehl in Linux: Optionen, Beispiele, SSH

Das Kopieren von Dateien mit cp oder scp ist in Ordnung, bis du es mit Verzeichnissen mit Tausenden von Dateien, langsamen Verbindungen oder inkrementellen Sicherungen zu tun hast. rsync löst all das in einem Befehl.

Was ist rsync und wie funktioniert es?

rsync ist ein Tool zur Dateisynchronisation und -übertragung für Linux. Im Gegensatz zu cp, das alles jedes Mal kopiert, analysiert rsync Quelle und Ziel und überträgt nur das, was sich geändert hat. Dadurch ist es bei wiederholten Übertragungen erheblich schneller.

Der Delta-Transfer-Algorithmus

rsync unterteilt Dateien in Blöcke fester Größe und berechnet für jeden eine Prüfsumme. Es vergleicht Prüfsummen zwischen Quelle und Ziel und überträgt dann nur die Blöcke, die sich unterscheiden. Bei einer 1GB-Datei, bei der du 10 KB geändert hast, überträgt rsync etwa 10 KB. scp überträgt 1GB. Der Unterschied ist bei langsamen Verbindungen oder großen Backup-Sets von Bedeutung.

rsync installieren

Auf Debian/Ubuntu:

sudo apt install rsync

Auf RHEL/CentOS:

sudo yum install rsync

Überprüfe deine Version:

rsync --version

rsync-Syntax und wichtige Optionen

Grundlegende Syntax:

rsync [OPTIONS] SOURCE DESTINATION

Zentrale Options-Flags erklärt

Die Flags, die du für jeden rsync-Befehl verwenden wirst:

  • -a (–archive): Archivmodus. Kopiert Verzeichnisse rekursiv und behält Berechtigungen, Zeitstempel, symbolische Links und Gerätedateien bei. Verwende dies fast immer.
  • -v (–verbose): Zeigt jede übertragene Datei an. Füge -vv für noch mehr Details hinzu.
  • -z (–compress): Komprimiert Daten während der Übertragung. Spart Bandbreite bei langsamen Verbindungen, erhöht jedoch die CPU-Belastung bei schnellen.
  • -P: Kombiniert –progress und –partial. Zeigt den Übertragungsfortschritt an und behält partielle Dateien im Falle einer Unterbrechung.
  • –delete: Löscht Dateien im Ziel, die nicht mehr in der Quelle vorhanden sind. Behält das Ziel als genaues Abbild.

Verwendung von -n für Probeläufe

Das rsync-Probelauf-Flag (-n oder –dry-run) simuliert die Übertragung, ohne tatsächlich etwas zu bewegen:

rsync -avn source/ destination/

Führe immer zuerst einen Probelauf durch, wenn du –delete verwendest. Es zeigt genau an, welche Dateien gelöscht werden würden, bevor du es bestätigst.

Überwachen des Fortschritts mit –progress

Bei großen Übertragungen zeigt –progress die Übertragungsgeschwindigkeit pro Datei und die voraussichtliche Fertigstellung an:

rsync -av --progress source/ destination/

Die rsync-Fortschrittsausgabe zeigt die übertragenen Bytes, die Übertragungsrate und die geschätzte verbleibende Zeit.

Wie man rsync verwendet: Praktische Beispiele

Dateien lokal synchronisieren

Kopiere ein lokales Verzeichnis an einen anderen Ort:

rsync -av /home/user/documents/ /backup/documents/

Beachte den abschließenden Schrägstrich in der Quelle. Mit einem abschließenden Schrägstrich kopiert rsync den Inhalt des Verzeichnisses. Ohne ihn kopiert rsync das Verzeichnis selbst in das Ziel.

Dateien auf einen Remote-Server über SSH kopieren

rsync über SSH verwendet die gleiche Syntax wie scp, jedoch mit der Effizienz von rsync:

rsync -avz -e ssh /local/path/ user@remote-server:/remote/path/

Das Flag -e ssh weist rsync an, SSH für die Transportebene zu verwenden. Füge bei Bedarf einen benutzerdefinierten Port hinzu:

rsync -avz -e "ssh -p 2222" /local/path/ user@remote:/remote/path/

Synchronisierung vom Remote-Server zum lokalen Server

Dateien von einem Remote-Server abrufen:

rsync -avz user@remote-server:/remote/path/ /local/destination/

Gleiche Syntax, nur Quelle und Ziel sind vertauscht.

Ein Verzeichnis mit rsync sichern

Ein vollständiger rsync-Befehl für ein Backup, der ein Quellverzeichnis spiegelt und gelöschte Dateien entfernt:

rsync -av --delete /source/directory/ /backup/directory/

Führe dies in einem Cron-Job aus, um automatisierte inkrementelle Backups zu erstellen.

Filtern: Muster ausschließen und einschließen

Dateien und Verzeichnisse ausschließen

Die rsync-Exclude-Option schließt bestimmte Dateien oder Verzeichnisse von der Übertragung aus:

rsync -av --exclude='*.log' source/ destination/

Mehrere Muster ausschließen:

rsync -av --exclude='*.log' --exclude='tmp/' source/ destination/

Für komplexe Filterregeln verwende eine Datei:

rsync -av --exclude-from='exclude-list.txt' source/ destination/

Verwenden von –delete zum Spiegeln von Verzeichnissen

Die rsync-Delete-Option entfernt Dateien vom Ziel, die in der Quelle nicht mehr vorhanden sind:

rsync -av --delete source/ destination/

Dies macht rsync zu einem echten Spiegelungstool. Sei vorsichtig: Von der Quelle gelöschte Dateien werden auch vom Ziel gelöscht. Führe immer zuerst einen Probelauf durch.

Automatisierung von rsync mit Cron

Führe jede Nacht um 2 Uhr ein Backup aus:

0 2 * * * rsync -az --delete /data/ /backup/data/ >> /var/log/rsync-backup.log 2>&1

Leite sowohl stdout als auch stderr in eine Protokolldatei um, damit du überprüfen kannst, ob das Backup ordnungsgemäß ausgeführt wurde.

FAQ: rsync-Befehl

Was macht rsync -avz?

Es führt rsync im Archivmodus (-a, das Berechtigungen bewahrt und Verzeichnisse rekursiv durchläuft), im ausführlichen Modus (-v, zeigt zu übertragene Dateien an) und im komprimierten Modus (-z, komprimiert Daten während der Übertragung) aus. Es ist der Standard-Ausgangspunkt für die meisten rsync-Befehle.

Wie synchronisiere ich Dateien über SSH mit rsync?

Verwende: rsync -avz -e ssh /local/path/ user@server:/remote/path/ Das Flag -e ssh leitet die Übertragung über eine SSH-Verbindung. Für nicht-standardmäßige Ports: rsync -avz -e „ssh -p 2222“ Quelle/ user@host:/Ziel/

Wie mache ich einen Probelauf mit rsync?

Füge das Flag -n hinzu: rsync -avn Quelle/ Ziel/ Dies zeigt alles, was rsync tun würde, ohne tatsächlich etwas zu übertragen oder zu löschen. Unverzichtbar vor der Verwendung von –delete.

Wie schließe ich Dateien von rsync aus?

Verwende –exclude=’Muster‘: rsync -av –exclude=’*.tmp‘ Quelle/ Ziel/ Für mehrere Ausschlüsse füge mehrere –exclude-Flags hinzu oder verwende –exclude-from mit einer Datei, die ein Muster pro Zeile enthält.

Nach oben scrollen