Als Linux-Systemadministrator gibt es viele verschiedene Möglichkeiten, Dateien zu übertragen , sicher oder nicht, zwischen zwei verschiedenen Hosts.
Während Ihrer täglichen Arbeit werden Sie möglicherweise gebeten, einige große Überweisungen durchzuführen zwischen zwei entfernten Servern.
Möglicherweise müssen Sie eine gesamte Datenbank sichern auf einem sicheren freigegebenen Laufwerk, oder Sie möchten einfach eine Remote-Datei auf Ihr System übertragen.
Folglich möchten Sie Dateien übertragen , aber Sie möchten es auf eine sehr sichere Art und Weise tun.
Glücklicherweise gibt es viele verschiedene Befehle, die Sie verwenden können, um dies zu erreichen.
In diesem Tutorial werden wir all die verschiedenen Möglichkeiten sehen, Dateien zwischen Hosts unter Linux zu übertragen Verwenden Sie entweder ftp, sftp, scp oder rsync.
Bereit?
Hier sind alle Möglichkeiten zum Übertragen von Dateien unter Linux:
Übertragen von Dateien unter Linux mit FTP
Die erste Möglichkeit, Dateien unter Linux zu übertragen, ist die Verwendung von ftp Befehl .
Standardmäßig verwendet das FTP-Protokoll das ungesicherte TCP-Protokoll .
Das bedeutet, dass jemand, der über das Netzwerk gesendete Daten oder Pakete verfolgen würde, sehen könnte, was Sie an entfernte Hosts senden.
In den meisten Fällen möchten Sie dies für Ihre Dateiübertragungen nicht, insbesondere wenn sie über das Internet erfolgen.
Wir werden jedoch weiterhin die Syntax für den Befehl ftp bereitstellen, da es nützlich sein kann, ihn der Einfachheit halber über lokale Netzwerke zu verwenden.
Standardmäßig hat Ihre Distribution den FTP-Befehl möglicherweise nicht standardmäßig installiert.
Um zu überprüfen, ob FTP auf Ihrem Host installiert ist, können Sie den folgenden Befehl ausführen
$ command -v ftp
Wenn Ihnen keine Ausgaben bereitgestellt werden, bedeutet dies, dass der FTP-Server auf Ihrem System nicht verfügbar ist.
FTP auf Debian-basierten Distributionen installieren
Um es auf Debian zu installieren -basierten Distributionen führen Sie den folgenden Befehl aus
Um neue Pakete zu installieren, benötigen Sie sudo-Berechtigungen für Ihre Debian-Distribution
$ sudo apt-get install ftp
Führen Sie nach der Installation den Befehl „command“ erneut aus, um sicherzustellen, dass er korrekt auf Ihrem System verfügbar ist.
$ command -v ftp
/usr/bin/ftp
FTP auf Red Hat-basierten Distributionen installieren
Um FTP auf Red Hat-basierten Distributionen zu installieren, müssen Sie die folgenden Befehle ausführen
Um neue Pakete auf RHEL zu installieren oder CentOS , müssen Sie über sudo-Berechtigungen für Ihre CentOS-Distribution verfügen.
$ sudo yum install ftp
Führen Sie erneut den Befehl „command“ aus, um zu überprüfen, ob Ihre Pakete korrekt installiert wurden
$ command -v ftp
/usr/bin/ftp
Stellen Sie mit FTP eine Verbindung zu entfernten Hosts her
Um sich mit dem ftp-Befehl mit entfernten Hosts zu verbinden, müssen Sie die folgende Syntax verwenden
$ ftp <destination_ip>
Beim Verbinden sollten Sie Folgendes sehen, wenn Sie sich mit einem nicht geschützten FTP-Server verbinden.
Geben Sie den Benutzernamen ein, der Ihnen zugewiesen wurde, um sich mit diesem FTP-Server zu verbinden.
Sie werden aufgefordert, Ihr Passwort einzugeben. Wenn die Anmeldeinformationen korrekt sind, sollten Sie sich direkt bei Ihrem FTP-Server anmelden können.
Dateien unter Linux mit FTP herunterladen
Wenn Sie mit Ihrem FTP-Server verbunden sind, haben Sie viele Möglichkeiten, damit zu interagieren.
Drücken Sie zuerst „? “, um alle verfügbaren Befehle anzuzeigen.
Wie Sie sehen können, sind die verfügbaren Befehle ziemlich identisch mit denen, die Sie auf einem Standard-Linux-System finden würden.
Standardmäßig erhalten Sie auf Ihrem FTP-Server einen FTP-Shell-Zugriff direkt auf Ihr Home-Verzeichnis.
Um alle Dateien anzuzeigen, die Ihnen im aktuellen Verzeichnis zur Verfügung stehen, führen Sie den folgenden Befehl aus
$ ls
Wie Sie hier sehen können, liste ich die Einträge meines Home-Verzeichnisses auf.
Um in einem der Ordner zu navigieren, drücken Sie den Standardbefehl „cd“ mit dem Pfad, zu dem Sie navigieren möchten.
Um eine Datei aus dem aktuellen Verzeichnis herunterzuladen, müssen Sie den folgenden Befehl ausführen
$ get <file>
Das Lokal wird in Ihr aktuelles Arbeitsverzeichnis auf dem lokalen Rechner kopiert, d. h. in den Pfad, von dem aus Sie den FTP-Befehl ursprünglich gestartet haben.
Nebenbei bemerkt:Wenn Sie mehrere Dateien von Ihren Remote-Hosts herunterladen möchten, müssen Sie den Befehl „mget“ mit der folgenden Syntax verwenden
$ mget <file1> <file2> ... <filen>
Herzliche Glückwünsche!
Sie haben eine Datei erfolgreich per FTP von Ihrem entfernten Computer auf Ihren lokalen Computer übertragen.
Hochladen von Dateien unter Linux mit FTP
Mit FTP können Sie Dateien von Ihren entfernten Hosts herunterladen, aber Sie können auch Dateien auf Ihre entfernten Hosts hochladen.
Um Dateien per FTP hochzuladen, müssen Sie den „put“-Befehl mit der folgenden Syntax verwenden
$ put <file>
Ihre Datei sollte jetzt auf Ihrem Remote-Host zugänglich sein, im Home-Verzeichnis des Benutzers, den Sie zum Übertragen Ihrer Dateien verwenden.
$ ls /home/<user>
file.txt
Wenn Sie mehrere Dateien auf Ihre Remote-Hosts hochladen möchten, können Sie auf ähnliche Weise "mput" auf diese Weise verwenden
$ mput <file1> <file2> ... <filen>
Herzlichen Glückwunsch!
Sie haben Dateien erfolgreich per FTP von Ihrem lokalen Host auf Ihren Remote-Host übertragen.
Übertragen von Dateien mit sftp unter Linux
Eine sicherere Methode zum Übertragen von Dateien zwischen zwei Hosts ist die Verwendung des Befehls sftp.
Der sftp-Befehl, der für "Secure File Transfer Protocol" steht “, ist eine Möglichkeit, Dateien zwischen zwei Hosts mit verschlüsseltem Datenverkehr zu übertragen.
Selbst wenn jemand den Datenverkehr zwischen Ihnen und dem Remote-Host abfängt, kann dieser ihn daher nicht entschlüsseln, ohne Zugriff auf Ihre SSH-Schlüssel zu haben.
Wenn Sie den Befehl sftp verwenden, muss der Host, auf den Sie versuchen, Dateien herunter- oder hochzuladen, mit einem SSH-Server ausgestattet sein.
Wenn Sie einen OpenSSH-Server auf Ihrem Remote-Host verwenden, können Sie sich mit ihm verbinden, um Dateiübertragungen durchzuführen.
Standardmäßig sftp sollte auf Ihrem System verfügbar sein, aber Sie können es überprüfen, indem Sie den folgenden Befehl ausführen.
$ command -v sftp
/usr/bin/sftp
Mit sftp eine Verbindung zu entfernten Hosts herstellen
Um sich mit sftp mit entfernten Hosts zu verbinden, müssen Sie die folgende Syntax verwenden
$ sftp <destination_ip>
Wenn Sie sich zum ersten Mal mit einem entfernten Host verbinden, werden Sie standardmäßig aufgefordert, den Host zur Liste der vertrauenswürdigen Hosts Ihres Systems hinzuzufügen (standardmäßig unter /home/user/.ssh/known_hosts).
Nachdem Sie nun mit Ihrem Remote-SSH-Server verbunden sind, ist die Syntax zum Navigieren oder Übertragen von Dateien dieselbe wie beim Standard-ftp-Befehl.
Dateien unter Linux mit sftp herunterladen
Zunächst einmal können Sie auf „?“ klicken. um alle Befehle zu sehen, die Ihnen auf dem SSH-Server zur Verfügung stehen.
Drücken Sie zunächst den Befehl „ls“, um alle Dateien und Ordner anzuzeigen, die Ihnen auf dem Remote-System zur Verfügung stehen.
$ ls
Wie Sie sehen können, listet dieser Befehl den gesamten Ordner auf, in dem ich mich gerade befinde (in diesem Fall das Home-Verzeichnis).
Um zu einem Ordner zu navigieren, drücken Sie den „cd“-Befehl, der normalerweise auf einem Standard-FTP-Server ausreichen würde.
$ cd <path>
Um eine Datei auf einen SFTP-Server herunterzuladen, verwenden Sie den Befehl „get“ mit dieser Syntax
$ get <file>
Die Datei wird aus dem aktuellen Remote-Verzeichnis in das lokale Verzeichnis kopiert, in dem Sie den sftp-Befehl gestartet haben.
Herzliche Glückwünsche! Sie haben die Dateien korrekt von Ihrem Remote-Host auf Ihren lokalen Computer übertragen.
Hochladen von Dateien unter Linux mit sftp
Alternativ können Sie Dateien zwischen Ihrem lokalen Computer und Ihrem Remote-Host übertragen.
Um Dateien mit sftp zu übertragen, müssen Sie den Befehl „put“ verwenden.
$ put <file>
Wenn Sie die Einträge Ihres entfernten Verzeichnisses auflisten, sollten Sie Ihre Datei sehen können.
$ sftp> ls -l
Herzlichen Glückwunsch!
Sie haben erfolgreich Dateien von Ihrem lokalen Host auf Ihren Remote-Computer übertragen.
Übertragen von Dateien unter Linux mit scp
Eine der anderen Möglichkeiten, Dateien zwischen zwei Hosts unter Linux zu übertragen, ist die Verwendung des scp-Befehls.
$ scp <option> <source_user>@<source_host>:<file> <destination_user>@<destination_host>:<file>
Der Befehl scp stellt eine sichere Verbindung zwischen den beiden Hosts her und verwendet den Standard-SSH-Port, um Dateien zu übertragen.
Folglich benötigen Sie einen SSH-Server auf Ihrem Zielhost, damit die Datei übertragen werden kann.
Um beispielsweise eine lokale Datei von Ihrem aktuellen Computer auf einen Remote-Host zu übertragen, würden Sie den folgenden Befehl ausführen
$ scp file [email protected]:file
Wenn Sie keinen absoluten Pfad angeben, werden die Dateien standardmäßig direkt in das Home-Verzeichnis des Benutzers kopiert, mit dem Sie sich verbinden.
Wenn ich jetzt die Dateien auf meinem entfernten Host überprüfe, sollte die Datei im Home-Verzeichnis des Benutzers liegen.
Übertragen von Verzeichnissen unter Linux mit scp
Mit dem scp-Befehl ist es auch möglich, ganze Verzeichnisse auf den Zielhost zu übertragen.
Um Verzeichnisse zu kopieren, müssen Sie die Option „-r“ angeben.
Nehmen wir das Beispiel eines Ordners namens „Verzeichnis“ mit 3 Dateien darin. Um sie zu kopieren, müssen Sie den folgenden Befehl verwenden
$ scp -r directory [email protected]:.
Wenn Sie die Verzeichnisse auf Ihrem Zielhost überprüfen, sollten Sie Ihr übertragenes Verzeichnis sehen können.
Beachten Sie, dass, wenn Sie ein benutzerdefiniertes Verzeichnis auf dem Ziel angeben, es erstellt wird, wenn es nicht standardmäßig vorhanden ist.
Übertragen von Dateien zwischen zwei Remote-Hosts
Im vorherigen Beispiel haben wir einen lokalen Host mit einem entfernten Host verwendet, den wir über seine IP-Adresse kontaktiert haben.
Jetzt müssen Sie möglicherweise Dateien zwischen zwei entfernten Hosts mit zwei unterschiedlichen IP-Adressen übertragen.
Um Dateien zwischen diesen beiden Hosts zu übertragen, führen Sie den folgenden Befehl aus
$ scp <option> <source_user>@<source_host>:<file> <destination_user>@<destination_host>:<file>
Zum Beispiel würde es zu
führen$ scp [email protected]:file [email protected]:file
Beachten Sie, dass Sie in diesem Fall zwei SSH-Server auf beiden Instanzen benötigen, sonst funktioniert es nicht.
Scp mit Fortschrittsbalken verwenden
Um Statistiken für den scp-Prozess anzuzeigen, müssen Sie die Option „-v“ (das steht für verbose) angeben
$ scp -v <source_user>@<source_host>:<file> <destination_user>@<destination_host>:<file>
Übertragen von Dateien unter Linux mit rsync
Schließlich besteht die letzte Möglichkeit, Dateien zwischen zwei Hosts unter Linux zu übertragen, darin, den Befehl rsync zu verwenden.
Der Befehl rsync verwendet ebenfalls ein sicheres Protokoll, da er für die Datenübertragung auf das SSH-Protokoll angewiesen ist. Es kann auf viele verschiedene Arten verwendet werden, aber wir werden uns in diesem Tutorial auf Dateiübertragungen konzentrieren.
Die scp- und rsync-Befehle sind sehr ähnlich, aber rsync bietet viel mehr Funktionalitäten für Dateiübertragungen. Sie können beispielsweise bestimmte Dateien einbeziehen und andere ausschließen. Sie können sich auch dafür entscheiden, Berechtigungen oder Hardlinks während eines Kopiervorgangs beizubehalten.
Insgesamt ist rsync eine Obermenge des scp-Befehls.
Standardmäßig ist der Befehl rsync möglicherweise nicht auf Ihrem System installiert. Um es zu installieren, befolgen Sie diese Anweisungen.
Installieren von rsync auf Debian-basierten Distributionen
Um rsync zu installieren, müssen Sie ein sudo-Benutzer auf Ihrem Host sein.
Um rsync zu installieren, führen Sie den folgenden Befehl aus
$ sudo apt-get install rsync
Führen Sie abschließend den Befehl aus, um sicherzustellen, dass er ordnungsgemäß installiert wurde.
$ rsync --help
Installieren von rsync auf Red Hat-basierten Distributionen
Um rsync auf RHEL oder auf CentOS zu installieren, führen Sie den folgenden Befehl aus
$ sudo yum install rsync
Führen Sie auf ähnliche Weise die Hilfeoption aus, um sicherzustellen, dass sie korrekt installiert wurde.
$ rsync --help
Verwenden von rsync zum Übertragen von Dateien unter Linux
Nachdem rsync nun korrekt auf Ihrem Host installiert ist, können Sie es folgendermaßen verwenden
$ rsync <option> <source_user>@<source_host>:<file> <destination_user>@<destination_host>:<file>
Um beispielsweise Dateien von einem lokalen Host auf einen Remote-Rechner zu übertragen, würden Sie den folgenden Befehl ausführen
$ rsync file [email protected]:file
Um Dateien von Ihrem Remote-Host auf Ihren lokalen Computer zu kopieren, würden Sie auf ähnliche Weise
ausführen$ rsync [email protected]:file file
Verwenden von rsync zum Übertragen von Verzeichnissen unter Linux
Mit rsync können Sie auch komplette Verzeichnisse von einem lokalen Host auf einen entfernten übertragen.
Sie müssen lediglich die Option „-r“ an Ihre aktuelle Syntax anhängen
$ rsync -r <source_user>@<source_host>:<file> <destination_user>@<destination_host>:<file>
Beim Kopieren von Verzeichnissen gibt es eine Regel, die Sie beachten müssen.
Bei der Angabe des Quellverzeichnisses haben Sie die Möglichkeit, am Ende einen abschließenden Schrägstrich hinzuzufügen, um den Inhalt des Verzeichnisses und nicht das Verzeichnis selbst zu kopieren.
Nehmen wir zur Veranschaulichung an, dass Sie ein Verzeichnis mit dem Namen „Verzeichnis“ haben, das Sie in ein Remote-Verzeichnis mit dem Namen „Directory“ auf Ihrem Remote-Computer übertragen möchten.
Bei Verwendung einer nachgestellten Syntax würden Sie Folgendes auf Ihrem Remote-Host erhalten
$ rsync directory/ [email protected]:directory
Auf dem Remote-Host
/home/user/
├── directory
├── file1
├── file2
├── file3
Wenn Sie jedoch rsync ohne nachgestellten Schrägstrich schreiben, also
$ rsync directory [email protected]:directory
Auf dem Remote-Host
/home/user/
├── directory
├── directory
├── file1
├── file2
├── file3
Daher sollten Sie beim Kopieren von Dateien von einem Host auf einen anderen standardmäßig nachgestellte Schrägstriche verwenden, um doppelte Verzeichnisnamen zu vermeiden.
Rsync mit Fortschrittsbalken verwenden
Eine sehr praktische Möglichkeit, rsync zu verwenden, besteht darin, einen Fortschrittsbalken für lange Übertragungen damit zu verknüpfen.
Um einen Fortschrittsbalken bei der Verwendung von rsync zu haben, müssen Sie die Option „–progress“ (für Menschenlesbarkeit) verwenden
$ rsync --progress <source_user>@<source_host>:<file> <destination_user>@<destination_host>:<file>
Schlussfolgerung
In diesem Tutorial haben Sie gelernt, wie Sie Dateien unter Linux einfach mit dem Befehl ftp, den Befehlen sftp, scp oder rsync übertragen können.
Sie haben die Unterschiede zwischen diesen Befehlen gesehen und wie sie verwendet werden können, um komplette Verzeichnisse zu übertragen.