Früher oder später werden Sie sich in einer Situation wiederfinden, in der Sie die Datei über SSH auf den Remote-Server hochladen oder eine Datei davon kopieren müssen.
Es gibt verschiedene Möglichkeiten, wie Sie Dateien über SSH übertragen können. Ich werde hier die folgenden Methoden diskutieren:
- scp:Legacy-Befehl, der veraltet ist
- rsync:Beliebter Befehl zur Dateisynchronisierung
- sshfs:Mounten des entfernten Verzeichnisses über SSH
- SFTP-Clients:GUI-Tool für den Dateizugriff über SFTP
Für eine erfolgreiche Dateiübertragung über SSH müssen Sie
- um SSH-Zugriff zwischen den beiden Maschinen zu haben
- um den Benutzernamen und das Passwort auf dem Remote-Rechner zu kennen
- IP-Adresse oder Hostname (im gleichen Subnetz) des Remote-Rechners
Abgesehen davon sehen wir uns die Methoden zum Kopieren von Dateien zwischen entfernten Systemen über SSH an.
Methode 1:Verwenden Sie den scp-Befehl, um Dateien über SSH zu kopieren
Ich habe gelesen, dass scp veraltet sein wird. Dennoch ist es mein Lieblingstool zum Übertragen von Dateien zwischen Systemen über SSH. Wieso den? Weil seine Syntax dem cp-Befehl ähnelt.
Sehen wir uns an, wie man den scp-Befehl verwendet.
Kopieren Sie Dateien vom Remote-Computer auf Ihren lokalen Computer
Hier ist das Szenario. Sie möchten Dateien vom Remote-Linux-System auf das aktuell angemeldete System kopieren.
Hier ist eine generische Syntax, die die Datei aus dem Home-Verzeichnis des Benutzers auf dem entfernten System in das aktuelle Verzeichnis Ihres lokal angemeldeten Systems kopiert.
scp [email protected]_address:/home/username/filename .
Sehen Sie die Ähnlichkeit mit dem cp-Befehl? Es ist fast dasselbe, außer dass Sie den Benutzernamen und die IP-Adresse mit einem Doppelpunkt (:) angeben müssen.
Lassen Sie mich Ihnen nun ein reales Beispiel für diesen Befehl zeigen.
Im obigen Beispiel habe ich die Datei remote.txt
kopiert aus /home/abhishek/my_file
Verzeichnis auf dem Remote-System in das aktuelle Verzeichnis des lokalen Rechners.
Dies sollte Ihnen einen Hinweis geben, dass Sie den genauen Speicherort der Datei auf dem Remote-System kennen sollten. Die Tab-Vervollständigung funktioniert nicht auf Remote-Systemen.
Dateien von Ihrem lokalen Computer auf den Remote-Computer kopieren
Das Szenario ist hier leicht verändert. In diesem Fall senden Sie mit scp.
eine lokale Datei über SSH an das Remote-SystemDies ist eine generische Syntax, die den Dateinamen in das Home-Verzeichnis von Benutzername auf dem entfernten System kopiert.
scp filename [email protected]_address:/home/username
Im obigen Beispiel habe ich local.txt
kopiert Datei aus dem aktuellen Verzeichnis in das Home-Verzeichnis des Benutzers abhishek
auf dem Remote-System.
Dann habe ich mich beim Remote-System angemeldet, um zu zeigen, dass die Datei tatsächlich kopiert wurde.
Sie können auch Verzeichnisse kopieren
Erinnerst du dich, dass ich dir gesagt habe, dass ich scp wegen seiner Ähnlichkeit mit dem cp-Befehl mag?
Wie beim cp-Befehl können Sie auch scp verwenden, um das Verzeichnis über SSH zu kopieren. Die Syntax ähnelt auch dem cp-Befehl. Sie müssen nur das -r
verwenden Option.
scp -r source_dir [email protected]_address:/home/username/target_dir
Sie können noch viel mehr damit machen. Lesen Sie weitere Beispiele für den scp-Befehl in diesem Tutorial:
Methode 2:Verwenden Sie rsync, um Dateien und Verzeichnisse über SSH zu kopieren
Da scp veraltet ist, ist rsync das nächstbeste Tool zum Kopieren von Dateien zwischen entfernten Systemen über SSH. Tatsächlich ist es in vielerlei Hinsicht besser als scp.
Die Befehlssyntax ist die gleiche wie bei scp. Ältere Versionen von rsync mussten rsync -e ssh
verwenden aber das ist nicht mehr der Fall.
Kopieren Sie Dateien vom Remote-Computer auf Ihren lokalen Computer
Angenommen, Sie möchten eine Datei aus dem Home-Verzeichnis des Benutzers auf dem entfernten System in das aktuelle Verzeichnis Ihres lokal angemeldeten Systems kopieren.
rsync [email protected]_address:/home/username/filename .
Nehmen wir das gleiche Beispiel, das Sie mit scp gesehen haben. Ich kopiere die Datei remote.txt
aus /home/abhishek/my_file
Verzeichnis auf dem Remote-System in das aktuelle Verzeichnis des lokalen Rechners.
Dateien von Ihrem lokalen Computer auf den Remote-Computer kopieren
Hier ist eine generische Syntax, die die Datei in das Home-Verzeichnis von Benutzername auf dem entfernten System kopiert.
rsync filename [email protected]_address:/home/username
Zeit, das reale Beispiel zu sehen. Ich kopiere local.txt
Datei aus dem aktuellen Verzeichnis in das Home-Verzeichnis des Benutzers abhishek
auf dem Remote-System.
Wie wäre es mit dem Kopieren von Verzeichnissen mit rsync?
Es ist das gleiche. Verwenden Sie einfach -r
Option mit rsync, um das gesamte Verzeichnis über SSH zwischen entfernten Systemen zu kopieren.
rsync -r source_dir [email protected]_address:/home/username/target_dir
Schauen Sie sich dieses Beispiel an. Ich kopiere das gesamte my_file-Verzeichnis vom entfernten System auf das lokale System.
rsync ist ein vielseitiges Werkzeug. Es ist im Wesentlichen ein Tool zum „rekursiven Synchronisieren“ des Inhalts zwischen zwei Verzeichnissen und sehr beliebt zum Erstellen automatisierter Backups.
Methode 3:Verwenden von SSHFS für den Zugriff auf Dateien vom Remote-System über SSH
Es gibt auch SSHFS (SSH-Dateisystem), das für den Zugriff auf entfernte Dateien und Verzeichnisse verwendet werden kann. Dies ist jedoch nur zum Kopieren von Dateien nicht sehr praktisch.
Bei dieser Methode mounten Sie das Remote-Verzeichnis auf Ihrem lokalen System. Einmal gemountet, können Sie Dateien zwischen dem gemounteten Verzeichnis und dem lokalen System kopieren.
Möglicherweise müssen Sie zuerst sshfs mit dem Paketmanager Ihrer Distribution auf Ihrem lokalen System installieren.
Unter Debian und Ubuntu können Sie den folgenden Befehl verwenden:
sudo apt install sshfs
Sobald Sie sshfs auf Ihrem System installiert haben, können Sie damit das Remote-Verzeichnis einhängen. Es wäre besser, ein dediziertes Verzeichnis für den Einhängepunkt zu erstellen.
mkdir mount_dir
Mounten Sie nun das gewünschte Verzeichnis auf der entfernten Maschine auf diese Weise:
sshfs [email protected]_address:path_to_dir mount_dir
Sobald es gemountet ist, können Sie Dateien in dieses Verzeichnis oder aus diesem Verzeichnis kopieren, als ob es sich auf Ihrem lokalen Rechner selbst befände.
cp local_file mount_dir
Denken Sie daran, dass Sie diese Datei gemountet haben. Sobald Ihre Arbeit erledigt ist, sollten Sie es auch aushängen:
umount mount_dir
Hier ist ein Beispiel, wo ich my_file
gemountet habe Verzeichnis vom entfernten System in das remote_dir
Verzeichnis auf dem lokalen System. Ich habe die remote.txt
kopiert Datei auf das lokale System und unmounten Sie dann das Verzeichnis.
Methode 4:Verwenden Sie einen GUI-basierten SFTP-Client zum Übertragen von Dateien zwischen Remotesystemen
Als letzten Ausweg können Sie einen FTP-Client zum Übertragen von Dateien zwischen entfernten und lokalen Systemen verwenden.
FileZilla ist einer der beliebtesten plattformübergreifenden FTP-Clients. Sie können es einfach auf Ihrem lokalen System installieren.
Gehen Sie nach der Installation zu Datei->Site-Manager und fügen Sie die Details des Remote-Systems wie IP-Adresse, SSH-Portnummer, Benutzername und Passwort hinzu.
Sobald Sie eine Verbindung hergestellt haben, können Sie eine geteilte Fensteransicht sehen, die das lokale Dateisystem auf der linken Seite und das entfernte Dateisystem auf der rechten Seite zeigt.
Um die Datei zu übertragen, ziehen Sie die Dateien per Drag-and-Drop von links nach rechts oder von rechts nach links. Unten erscheint ein Fortschrittsbalken.
Welche Methode bevorzugen Sie?
In Ordnung! Ich habe verschiedene Befehlszeilen- und GUI-Methoden gezeigt, die zum Kopieren von Dateien über SSH verwendet werden können.
Nun liegt es an Ihnen zu entscheiden, welche Methode Sie hier verwenden. Kommentieren Sie Ihre bevorzugte Methode zum Übertragen von Dateien über SSH.