Linux rsync-Befehl

Linux 命令大全Vollständige Liste der Linux-Befehle


Was ist der rsync-Befehl

rsync (Remote Sync) ist ein leistungsstarkes Dateisynchronisierungswerkzeug in Linux-Systemen. Es kann Dateien und Verzeichnisse effizient zwischen lokalen oder entfernten Systemen synchronisieren. rsync ist für seinen "inkrementellen Übertragungs"-Algorithmus bekannt, der nur die Unterschiede zwischen Quell- und Zieldateien überträgt und so die Effizienz der Dateiübertragung erheblich verbessert.

Kernfunktionen von rsync

  1. Inkrementelle Synchronisierung: Überträgt nur die geänderten Teile von Dateien, was Bandbreite und Zeit spart
  2. Attribute beibehalten: Kann Metadaten wie Dateiberechtigungen und Zeitstempel beibehalten
  3. Komprimierte Übertragung: Unterstützt Datenkomprimierung während der Übertragung, was die Netzwerklast reduziert
  4. Flexibler Ausschluss: Kann bestimmte Dateien oder Verzeichnisse ausschließen
  5. Remote-Unterstützung: Dateien entfernter Server sicher über SSH synchronisieren

Grundlegende rsync-Syntax

rsync [选项] 源文件 目标文件

Häufige Befehlsformen

Lokale Synchronisierung:

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

Von lokal nach remote synchronisieren:

rsync -avz /local/path/ username@remote_host:/remote/path/

Von remote nach lokal synchronisieren:

rsync -avz username@remote_host:/remote/path/ /local/path/

Detaillierte Erklärung gängiger rsync-Optionen

Option Vollständiger Name Beschreibung
-a --archive Archivmodus, behält alle Dateiattribute bei (entspricht -rlptgoD)
-v --verbose Detaillierte Übertragungsinformationen anzeigen
-z --compress Daten während der Übertragung komprimieren
-r --recursive Verzeichnisse rekursiv kopieren
-l --links Symbolische Links beibehalten
-p --perms Dateiberechtigungen beibehalten
-t --times Änderungszeit der Datei beibehalten
-g --group Dateigruppe beibehalten
-o --owner Dateieigentümer beibehalten
-D --devices Gerätedateien beibehalten (nur Superuser)
-h --human-readable Zahlen in menschenlesbarem Format ausgeben
--progress Übertragungsfortschritt anzeigen
--delete Dateien im Ziel löschen, die nicht in der Quelle vorhanden sind
--exclude=PATTERN Dateien ausschließen, die PATTERN entsprechen
--include=PATTERN Dateien einschließen, die PATTERN entsprechen

Praktische Anwendungsbeispiele für rsync

Beispiel 1: Lokale Verzeichnissynchronisierung

Beispiel

# /home/user/docs nach /backup/docs synchronisieren, dabei alle Attribute beibehalten
rsync -av /home/user/docs/ /backup/docs/

Hinweis: Der Schrägstrich nach dem Quellverzeichnis/ist sehr wichtig:

  • Mit Schrägstrich: die Verzeichnisinhalte synchronisieren
  • Ohne Schrägstrich: das Verzeichnis selbst synchronisieren

Beispiel 2: Remote-Server-Backup

Beispiel

# Synchronisiere das lokale Verzeichnis mit einem Remote-Server unter Verwendung von Komprimierung
rsync -avz /data/backups/ user@example.com:/Remote-/Backups/

Beispiel 3: Synchronisierung mit Ausschlussoptionen

Beispiel

# Synchronisieren, aber .tmp-Dateien und das Log-Verzeichnis ausschließen
rsync -av --exclude='*.tmp' --exclude='log/' /source/ /destination/

Beispiel 4: Beide Seiten vollständig konsistent halten (überzählige Dateien auf dem Ziel löschen)

Beispiel

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

Erweiterte rsync-Nutzung

1. Verwendung eines benutzerdefinierten SSH-Ports

Beispiel

rsync -avz -e 'ssh -p 2222' /lokaler/Pfad/ Benutzer@Host:/entfernter/Pfad/

2. Bandbreitenbegrenzung (begrenzt auf 500KB/s)

Beispiel

rsync -avz --bwlimit=500 /Quelle/ /Ziel/

3. Teilübertragung (nur Dateien größer als 100KB übertragen)

Beispiel

rsync -av --min-size=100K /Quelle/ /Ziel/

4. Geplantes Backup-Skript

Beispiel

#!/bin/bash
rsync -avz --delete /wichtige/Daten/ Backup@Server:/Backups/Daten/
echo "Backup abgeschlossen um $(date)" >> /var/log/backup.log

rsync FAQ

F1: Was ist der Unterschied zwischen rsync und scp?

  • rsync: Inkrementelle Synchronisierung, überträgt nur die Unterschiede, geeignet für regelmäßige Backups
  • scp: Jedes Mal vollständige Übertragung, geeignet für einmalige Dateiübertragungen

F2: Wie setzt man eine unterbrochene rsync-Übertragung fort?

Verwenden Sie--partialOption zum Behalten teilweise übertragener Dateien:

Beispiel

rsync -av --partial /Quelle/ /Ziel/

F3: Wie kann man sehen, was rsync tun wird, ohne es tatsächlich auszuführen?

Verwenden Sie-n(Trockenlauf-)Option:

Beispiel

rsync -avn /Quelle/ /Ziel/

F4: Wie kann man die rsync-Übertragungsgeschwindigkeit verbessern?

  1. Verwenden Sie-zOption zum Aktivieren der Komprimierung
  2. Verwenden Sie--compress-level=NKomprimierungsstufe anpassen (1-9)
  3. Prüfsummenberechnung deaktivieren (nur vertrauenswürdige Netzwerke):--no-checksum

Empfehlungen für bewährte Verfahren

  1. Zuerst testen: Verwenden Sie-ndie Option, um zuerst einen Probelauf durchzuführen
  2. Protokollierung: Fügen Sie hinzu--log-file=rsync.logum Vorgänge aufzuzeichnen
  3. Berechtigungsverwaltung: Erwägen Sie--chmoddie Verwendung zur Vereinheitlichung von Dateiberechtigungen
  4. Geplante Aufgaben: Kombinieren Sie mit crontab für automatische Backups
  5. Sichere Übertragung: Führen Sie Remote-Übertragungen immer über SSH durch

Zusammenfassung

rsync ist ein unverzichtbares Werkzeug für Linux-Systemadministratoren und Entwickler. Wenn Sie es beherrschen, können Sie:

  • Lokale und Remote-Dateisynchronisierung effizient durchführen
  • Automatisierte Backup-Lösungen implementieren
  • Netzwerkdatenübertragung optimieren
  • Dateisystemkonsistenz aufrechterhalten

Durch diesen Artikel sollten Sie die grundlegende Verwendung und fortgeschrittene Techniken von rsync beherrschen. Es wird empfohlen, in Ihrer tatsächlichen Arbeit mehr zu üben und nach und nach mehr von rsyncs leistungsstarken Funktionen zu entdecken.

Linux 命令大全Vollständige Liste der Linux-Befehle

Weitere Erweiterungen