Wenn es darum geht, Dateien zwischen Systemen im Netzwerk zu übertragen, stehen Linux- und Unix-Benutzern viele Tools zur Verfügung.
Die beliebtesten Protokolle für die Datenübertragung sind SSH und FTP. Obwohl FTP sehr beliebt ist, sollten Sie SSH immer bevorzugen, da dies die sicherste Methode zum Übertragen Ihrer Dateien ist.
Es gibt spezialisierte Tools für die Dateiübertragung über SSH wie scp
und sftp
aber keiner von ihnen hat alle Funktionen, die rsync
haben bietet. rsync
kann zum Spiegeln von Daten, inkrementellen Backups, Kopieren von Dateien zwischen Systemen usw. verwendet werden.
In diesem Tutorial erklären wir, wie man Dateien mit rsync
kopiert über SSH.
Anforderungen Nr.
-
Der
rsync
muss sowohl auf dem Ziel- als auch auf dem Quellsystem installiert sein. Wenn es nicht installiert ist, können Sie es mit dem Paketmanager Ihrer Distribution installieren:Ubuntu und Debian:
sudo apt install rsync
CentOS und Fedora:
sudo yum install rsync
-
SSH-Zugriff auf den Remote-Computer.
-
Der Benutzer, der
rsync
ausführt Befehl und der Remote-SSH-Benutzer muss über die entsprechenden Berechtigungen zum Lesen und Schreiben von Dateien verfügen.
Mit rsync
zum Übertragen von Dateien über SSH #
Mit rsync
, können Sie Dateien und Verzeichnisse über SSH von und zu entfernten Servern übertragen.
Die allgemeine Syntax zum Übertragen von Dateien mit rsync
lautet wie folgt:
Local to Remote: rsync [OPTION]... -e ssh [SRC]... [USER@]HOST:DEST
Remote to Local: rsync [OPTION]... -e ssh [USER@]HOST:SRC... [DEST]
Wobei SRC
ist das Quellverzeichnis, DEST
ist das Zielverzeichnis USER
ist der entfernte SSH-Benutzername und HOST
ist der entfernte SSH-Host oder die IP-Adresse.
Die neueren Versionen von rsync sind so konfiguriert, dass sie SSH als Standard-Remote-Shell verwenden, sodass Sie -e ssh
weglassen können Option.
Zum Beispiel, um eine einzelne Datei /opt/file.zip
zu übertragen vom lokalen System nach /var/www/
Verzeichnis auf dem entfernten System mit IP 12.12.12.12
Sie würden Folgendes ausführen:
rsync -a /opt/file.zip [email protected]:/var/www/
Das -a
Die Option steht für den Archivmodus, der Verzeichnisse rekursiv synchronisiert, spezielle und blockierte Geräte überträgt, symbolische Links, Änderungszeiten, Gruppen, Eigentümer und Berechtigungen beibehält.
Wenn Sie keine kennwortlose SSH-Anmeldung auf dem Remote-Computer eingerichtet haben, werden Sie aufgefordert, das Benutzerkennwort einzugeben.
Wenn die Datei auf dem Remote-Server vorhanden ist, wird sie überschrieben. Wenn Sie die Datei unter einem anderen Namen speichern möchten, geben Sie den neuen Namen an:
rsync -a /opt/file.zip [email protected]:/var/www/file2.zip
Um Daten von einem entfernten auf einen lokalen Rechner zu übertragen, verwenden Sie den entfernten Standort als Quelle und den lokalen Standort als Ziel:
rsync -a [email protected]:/var/www/file.zip /opt/
Verzeichnisse übertragen mit rsync
über SSH ist dasselbe wie das Übertragen von Dateien.
Es ist wichtig zu wissen, dass rsync
behandelt die Quellverzeichnisse mit einem nachgestellten Schrägstrich /
anders . Wenn das Quellverzeichnis einen nachgestellten Schrägstrich hat, rsync
kopiert nur den Inhalt des Quellverzeichnisses in das Zielverzeichnis. Wenn der abschließende Schrägstrich weggelassen wird, wird das Quellverzeichnis in das Zielverzeichnis kopiert.
Zum Beispiel um den lokalen /opt/website/images/
zu übertragen Verzeichnis in das Verzeichnis /var/www/images/
Verzeichnis auf einem Remote-Rechner würden Sie Folgendes eingeben:
rsync -a /home/linuxize/images/ [email protected]:/var/www/images/
Verwenden Sie den --delete
Option, wenn Sie das lokale und das entfernte Verzeichnis synchronisieren möchten. Seien Sie vorsichtig, wenn Sie diese Option verwenden, da Dateien im Zielverzeichnis gelöscht werden, wenn sie im Quellverzeichnis nicht vorhanden sind.
rsync -a --delete /home/linuxize/images/ [email protected]:/var/www/images/
Wenn SSH auf dem Remote-Host einen anderen Port als den Standardport 22
abhört , geben Sie den Port mit -e
an Möglichkeit. Zum Beispiel, wenn SSH auf Port 3322
lauscht Sie würden verwenden:
rsync -a -e "ssh -p 3322" /home/linuxize/images/ [email protected]:/var/www/images/
Bei der Übertragung großer Datenmengen empfiehlt es sich, den rsync
auszuführen Befehl innerhalb einer Bildschirmsitzung oder verwenden Sie den -P
Option, die rsync
mitteilt um während der Übertragung einen Fortschrittsbalken anzuzeigen und die teilweise übertragenen Dateien zu behalten:
rsync -a -P /home/linuxize/images/ [email protected]:/var/www/images/
Schlussfolgerung #
Wir haben Ihnen gezeigt, wie Sie rsync
verwenden über SSH, um Dateien und Verzeichnisse zu kopieren und zu synchronisieren.
Vielleicht möchten Sie auch lesen, wie Sie Dateien oder Verzeichnisse mit rsync
ausschließen .
Fühlen Sie sich frei, einen Kommentar zu hinterlassen, wenn Sie Fragen haben.