Ein einfaches Tutorial, das Ihnen hilft, Dateien von Ihrem Linux-System mit dem Befehl scp auf ein Remote-System zu übertragen.
SCP steht für „Sichere Kopie“. scp
ist ein von Linux angebotenes Befehlszeilen-Dienstprogramm, das die Übertragung von Dateien und Verzeichnissen von einem Computer auf einen anderen über ein unsicheres Netzwerk ermöglicht.
Wenn Sie Dateien von einem System auf ein anderes kopieren möchten, dann scp
kann eine sehr gute Option sein, um eine sichere Übertragung der Dateien und Verzeichnisse durchzuführen. Wenn die beiden kommunizierenden Geräte über dasselbe Netzwerk verbunden sind, verwenden Sie scp
wird möglich.
Auf die kann man sich stark verlassen scp
Befehl für Vertraulichkeit und Integrität, da die übertragene Datei und das für die Übertragung verwendete Passwort verschlüsselt sind. Es werden keine sensiblen Informationen preisgegeben, selbst wenn jemand versucht, während dieser Übertragung den Datenverkehr auszuspionieren.
In diesem Tutorial sehen wir verschiedene Beispiele für die scp
Befehl. Wir werden uns auch einige der am häufigsten verwendeten Optionen mit dem scp
Befehl.
Erste Schritte mit dem scp-Befehl
Verwendung der scp
Befehl können Sie Dateien/Verzeichnisse übertragen:
- Von Ihrem lokalen Computer zu einem Remote-Computer.
- Zwischen zwei entfernten Maschinen.
- Von einem Remote-Computer zu Ihrem lokalen Computer.
Allgemeine Syntax:
scp [Option] [Quelldateiname] [Benutzer@Ziel_Host]:Zielordner
Lassen Sie uns die grundlegenden Attribute dieses Befehls nacheinander verstehen.
- [source_file_name] Dies ist die Quelldatei, die Sie kopieren möchten.
- [user@destination_Host] Dies ist der Benutzername des Remote-Systems, auf das Sie die Datei kopieren möchten. Die IP-Adresse des Remote-Rechners wird in diesem Attribut auch nach dem ‘
@
‘-Symbol. - [Zielordner] Dies ist das Verzeichnis, in dem Sie die kopierte Datei speichern möchten.
Notiz: Der Doppelpunkt (:
) wird in der Syntax verwendet, da es zwischen den lokalen und entfernten Standorten unterscheidet. Wir verwenden den Doppelpunkt (:
) mit dem entfernten System, um das Verzeichnis anzugeben, in das die Dateien kopiert werden sollen. Falls wir das Zielverzeichnis nicht angeben, werden die Dateien in das Home-Verzeichnis des Remote-Systembenutzers kopiert.
Optionen verwendet mit scp
Einige der beliebtesten Optionen mit dem scp
Befehl sind unten aufgeführt.
Möglichkeit | Beschreibung |
-C | Komprimierung der zu übertragenden Datei zulassen |
-v | die ausführliche Ausgabe geben |
-R | Dateien und Verzeichnisse rekursiv kopieren |
-P | Bewahren Sie Berechtigungen, Modi und Zugriffszeiten von Dateien auf |
-P | Ändern Sie den Standardport, der von verwendet wird scp Befehl |
Wir werden die Beispiele für diese Optionen weiter unten im Tutorial sehen.
Kopieren einer Datei vom lokalen auf ein Remote-System
scp
ermöglicht Ihnen die Übertragung von Dateien von Ihrem lokalen System auf ein entferntes System unter Verwendung der folgenden Syntax. Auf diese Weise können Sie Ihre Dateien auf einen entfernt platzierten Server übertragen oder hochladen.
Allgemeine Syntax:
scp [Dateiname] entfernter_Benutzer@Host:[Zielordner]
Beispiel:
scp apache-tomcat-9.0.8.tar.gz [email protected]:gaurav
In diesem Beispiel kopieren wir eine Datei ‚apache-tomcat-9.0.8.tar.gz‘ vom lokalen System auf das Remote-System mit der IP-Adresse ‚143.110.178.221‘.
Auf dem entfernten System wird die Datei nun in das Verzeichnis namens ‚gaurav‘ kopiert.
Ausgabe:
gaurav@ubuntu:~$ scp apache-tomcat-9.0.8.tar.gz [email protected]:gaurav [email protected] Passwort: apache-tomcat-9.0.8.tar.gz 100% 9589KB 79.8KB /s 02:00 gaurav@ubuntu:~$
Lassen Sie uns die Ausgabe auf dem Remote-System auf die Datei überprüfen.
root@ubuntu-s-1vcpu-1gb-blr1-01:~/gaurav# ls apache-tomcat-9.0.8.tar.gz root@ubuntu-s-1vcpu-1gb-blr1-01:~/gaurav#
Somit wird die Datei erfolgreich auf das entfernte System kopiert, indem die scp
Befehl.
Mehrere Dateien auf ein Remote-System kopieren
Im vorherigen Beispiel haben wir gelernt, wie man eine Datei mit dem scp
Befehl. Wir sehen nun die Methode zum Übertragen mehrerer Dateien von Ihrem lokalen System auf ein Remote-System mit diesem Befehl.
Allgemeine Syntax:
scp [Datei 1] [Datei 2] [Datei n] Remote_Benutzername@Remote_Host:[spezifisches Verzeichnis]
Lassen Sie uns diesen einfachen Vorgang anhand eines Beispiels verstehen.
Beispiel:
scp ath.html abc.txt ppa-purge_0.2.8+bzr56_all.deb [email protected]:gaurav
Hier werden mehrere Dateien im Befehl erwähnt, die auf das Remote-System kopiert werden sollen.
Ausgabe:
gaurav@ubuntu:~$ scp ath.html abc.txt ppa-purge_0.2.8+bzr56_all.deb [email protected]:gaurav [email protected] Passwort: ath.html 100% 199KB 94.7KB/s 00: 02 abc.txt 100% 0 0.0KB/s 00:00 ppa-purge_0.2.8+bzr56_all.deb 100% 4360 42.2KB/s 00:00 gaurav@ubuntu:~$
Auf dem Remote-System:
root@ubuntu-s-1vcpu-1gb-blr1-01:~/gaurav# ls -l total 9800 -rw-r--r-- 1 root root 0 5. Okt 08:58 abc.txt -rw-r-- r-- 1 Wurzel-Wurzel 9818695 5. Okt. 08:35 apache-tomcat-9.0.8.tar.gz -rw-r--r-- 1 Wurzel-Wurzel 204057 5. Okt. 08:58 ath.html -rw-r-- r-- 1 root root 4360 5. Okt. 08:58 ppa-purge_0.2.8+bzr56_all.deb root@ubuntu-s-1vcpu-1gb-blr1-01:~/gaurav#
Alle drei Dateien werden nun auf das entfernte System kopiert.
Kopieren eines Verzeichnisses auf das Remote-System
Sie können verwenden scp
Befehl, um ein Verzeichnis von Ihrem lokalen System auf das entfernte System zu kopieren. Der Vorgang ähnelt dem des Kopierens einer Datei. Um auch den Inhalt des Verzeichnisses zu kopieren, können Sie die -R
Option mit der scp
Befehl.
Der -R
Option wird verwendet, um ein Verzeichnis rekursiv zu kopieren. Das heißt, alle Unterordner und Dateien innerhalb des Verzeichnisses werden ebenfalls kopiert.
Allgemeine Syntax:
scp -r [Verzeichnispfad] Remote-Benutzername@Remote_Host:[Zielverzeichnis]
Beispiel:
scp -r PycharmProjects [email protected]:gaurav
Ausgabe:
gaurav@ubuntu:~$ scp -r PycharmProjects [email protected]:gaurav [email protected] Passwort: __main__.py 100% 623 7.8KB/s 00:00 __init__.py 100% 23 0.4KB/s 00 :00 Completion.py 100 % 2929 28,1 KB/s 00:00 search.py 100 % 4728 38,7 KB/s 00:00 uninstall.py 100 % 2963 32,5 KB/s 00:00 hash.py 100 % 1681 21,3 KB/ s 00:00 check.py 100 % 1430 16,8 KB/s 00:00 configuration.py 100 % 7125 50,4 KB/s 00:00 show.py 100 % 6289 49,8 KB/s 00:00 download.py 100 % 6623 48,2 KB/s 00:00 gaurav@ubuntu:~$
Verwendung der -R
Option mit der scp
-Befehl kopiert alle Unterordner und Dateien innerhalb des Verzeichnisses vom lokalen Computer auf das Remote-System.
Detaillierte Informationen zum scp-Prozess anzeigen
Du kannst den ... benutzen -v
(Kleinbuchstaben v
) Option, um die Informationen zu den Dateien anzuzeigen, die entweder auf ein entferntes oder Ihr lokales System kopiert werden. Diese Art der Ausgabe wird auch als ausführliche Ausgabe bezeichnet.
Wenn diese Option verwendet wird, werden die vollständigen Debug-Informationen über die Datei auf dem Bildschirm angezeigt.
Allgemeine Syntax:
scp -v [Dateiname] Benutzername@Benutzerhost:
Beispiel:
scp -v apache-tomcat-9.0.8.tar.gz [email protected]:team
Ausgabe:
gaurav@ubuntu:~$ scp -v apache-tomcat-9.0.8.tar.gz [email protected]:team Ausführung: Programm /usr/bin/ssh host 159.89.170.11, Benutzer root, Befehl scp -v -t team OpenSSH_7.6p1 Ubuntu-4ubuntu0.3, OpenSSL 1.0.2n 7. Dez. 2017 debug1: Konfigurationsdaten lesen /home/gaurav/.ssh/config debug1: Konfigurationsdaten lesen /etc/ssh/ssh_config debug1: /etc/ssh/ssh_config Zeile 19: Optionen für * anwenden debug1: Verbindung zu 159.89.170.11 [159.89.170.11] Port 22. debug1: Verbindung hergestellt. debug1: key_load_public: Keine solche Datei oder kein solches Verzeichnis debug1: Identitätsdatei /home/gaurav/.ssh/id_rsa type -1 apache-tomcat-9.0.8.tar.gz 100% 9589KB 99.8KB/s 01:36 debug1: client_input_channel_req: Kanal 0 rtype Exit-Status-Antwort 0 debug1: Kanal 0: frei: Client-Session, nchannels 1 debug1: fd 0 clearing O_NONBLOCK debug1: fd 1 clearing O_NONBLOCK Übertragen: gesendet 9826736, empfangen 4016 Bytes, in 97,2 Sekunden Bytes pro Sekunde: gesendet 101133.9, 41.3 erhalten debug1: Exit-Status 0 gaurav@ubuntu:~$
Hier in der Ausgabe sehen Sie, dass die Debug-Informationen der Datei auf Ihrem Terminal angezeigt werden, wenn die scp
Befehl wird mit dem verwendet -v
Möglichkeit.
Übertragen von Dateien zwischen zwei Remote-Hosts
Linux ermöglicht es Ihnen, sich mit mehreren Remote-Hosts zu verbinden. Sie können Dateien und Verzeichnisse zwischen zwei Remote-Hosts übertragen, indem Sie das scp
Befehl.
Allgemeine Syntax:
scp remote_user_1@host_1:/[file_name] remote_user_2@host_2:[folder_to_save]
Die Syntax mag etwas breiter erscheinen, ist aber ziemlich einfach. Hier gibt der erste Teil des Befehls die Eingabe über den entfernten Benutzer, von dem die Datei kopiert werden soll. Doppelpunkt (:) und /
wird verwendet, um den Dateinamen oder den Verzeichnisnamen anzugeben, der zwischen den beiden entfernten Maschinen übertragen werden soll.
Der zweite Teil gibt Auskunft über das Zielfernsystem, auf das die Datei kopiert werden soll.
Beispiel:
scp -r [email protected]:gaurav [email protected]:/team
Hier kopieren wir ein Verzeichnis namens „gaurav“ rekursiv vom lokalen System auf ein entferntes System. Die Datei wird in einen Ordner „team“ auf dem Remote-System kopiert.
Ausgabe:
gaurav@ubuntu:~$ scp -r [email protected]:/gaurav [email protected]:/team [email protected] Passwort: 1.py 100% 134 261.3KB/s 00:00 variables.py 100 % 377 949,2 KB/s 00:00 abc.txt 100 % 0 0,0 KB/s 00:00 ath.html 100 % 199 KB 41,8 MB/s 00:00 gaurav@ubuntu:~$
Hier haben wir die scp
Befehl auf dem lokalen System, um ein Verzeichnis namens ‚gaurav‘ von einem entfernten Server auf einen anderen zu übertragen.
Übertragen Sie Dateien vom Remote-System auf Ihr lokales System
Sie können die Dateien oder Verzeichnisse einfach vom Remote-System auf Ihr lokales System übertragen, indem Sie das scp
Befehl. In einfacheren Worten, Sie können mehrere Dateien oder Verzeichnisse vom Remote-Server auf Ihr lokales System herunterladen, indem Sie die scp
Befehl.
Allgemeine Syntax:
scp remote_username@user_host:/files/file.txt /[Ordner_des_lokalen_Systems]
Ausgabe:
gaurav@ubuntu:~$ scp [email protected]:how.txt . [email protected]'s Passwort: how.txt 100% 11 0.1KB/s 00:00 gaurav@ubuntu:~$
Hier habe ich die Datei vom Remote-Server in mein Home-Verzeichnis heruntergeladen (kopiert). Daher habe ich Punkt (.
), um im Befehl anzugeben, dass die Datei in mein Home-Verzeichnis kopiert wird.
Beispielausgabe:
gaurav@ubuntu:~$ ls -l how.txt -rw-r--r-- 1 gaurav gaurav 11 Okt 6 09:49 how.txt gaurav@ubuntu:~$
Hier wird die Datei nun vom Remote-Server in mein Home-Verzeichnis kopiert.
Auf die gleiche Weise können Sie mehrere Dateien oder Verzeichnisse vom Remote-Server herunterladen, indem Sie die scp
Befehl mit den entsprechenden Optionen.
Komprimieren von Dateien für schnellere Übertragungen
Manchmal kann die Übertragung großer Dateien zeitaufwändig sein. Dieses Problem kann behoben werden, während Sie das scp
Befehl mit dem -C
(Großbuchstaben C
) Möglichkeit.
Verwendung der -C
Option komprimiert die größeren Dateien, was eine schnellere Übertragung ermöglicht und somit Zeit spart.
Eine interessante Tatsache bei dieser Option ist, dass die Datei mit ihrer Originalgröße auf das Zielsystem kopiert wird, aber während des Übertragungsprozesses die Größe komprimiert wird, um eine schnellere Übertragung zu ermöglichen. Somit erfolgt die Komprimierung nur im Netzwerk.
Allgemeine Syntax:
scp -C [Dateiname] Benutzername@Benutzerhost:[Zielordner]
Sehen wir uns ein Vergleichsbeispiel an, um den Unterschied zu verstehen.
Übertragung ohne Option -C:
gaurav@ubuntu:~$ scp -rv dlink [email protected]:team Ausführung: Programm /usr/bin/ssh host 68.183.82.183, Benutzer root, Befehl scp -v -r -t team OpenSSH_7.6p1 Ubuntu-4ubuntu0. 3, OpenSSL 1.0.2n 7. Dez. 2017 debug1: Konfigurationsdaten lesen /home/trinity/.ssh/config debug1: Konfigurationsdaten lesen /etc/ssh/ssh_config debug1: /etc/ssh/ssh_config Zeile 19: Optionen für * debug1 anwenden : Verbindung mit 68.183.82.183 [68.183.82.183] Port 22. debug1: Verbindung hergestellt. debug1: client_input_channel_req: channel 0 rtype exit-status response 0 debug1: channel 0: free: client-session, nchannels 1 debug1: fd 0 clearing O_NONBLOCK debug1: fd 1 clearing O_NONBLOCK Übertragen: gesendet 7516504, empfangen 4008 Bytes, in 74,6 Sekunden Bytes pro Sekunde: 100693.7 gesendet, 53.7 empfangen debug1: Exit-Status 0 gaurav@ubuntu:~$
Aus der obigen Ausgabe können wir sehen, dass die für die Übertragung erforderliche Zeit 74,6 Sekunden beträgt. Wir werden versuchen, dieselbe Datei mit der Option -C zu übertragen und den Unterschied beobachten.
Übertragung mit Option -C:
gaurav@ubuntu:~$ scp -Crv dlink [email protected]:team Ausführung: Programm /usr/bin/ssh host 68.183.82.183, Benutzer root, Befehl scp -v -r -t team OpenSSH_7.6p1 Ubuntu-4ubuntu0. 3, OpenSSL 1.0.2n 7. Dez. 2017 debug1: Konfigurationsdaten lesen /home/trinity/.ssh/config debug1: Konfigurationsdaten lesen /etc/ssh/ssh_config debug1: /etc/ssh/ssh_config Zeile 19: Optionen für * debug1 anwenden : Verbindung mit 68.183.82.183 [68.183.82.183] Port 22. debug1: Verbindung hergestellt. . . webupload.img 100% 1834KB 98,7KB/s 00:18 Sendedateimodi: C0664 1877552 router.img Sink: C0664 1877552 router.img router.img 100% 1834KB 100,3KB/s 00:18 Sink: E Sendedateimodi: C0664 3754103 DSL-2750U-Release-IN-T-01.00.07.zip Senke: C0664 3754103 DSL-2750U-Release-IN-T-01.00.07.zip DSL-2750U-Release-IN-T-01.00.07.zip 100% 3666KB 218.5KB/s 00:16 Sink: E debug1: client_input_channel_req: Kanal 0 rtype Exit-Status Reply 0 debug1: Kanal 0: frei: Client-Session, nchannels 1 debug1: fd 0 clearing O_NONBLOCK debug1: fd 1 clearing O_NONBLOCK Übertragen: gesendet 7518864, empfangen 3828 Bytes, in 51,0 Sekunden Bytes pro Sekunde: gesendet 100245,4, empfangen 51,0 Debug1: Exit-Status 0 Debug1: Ausgehend komprimieren: Rohdaten 7511925, komprimiert 7513136, Faktor 1,00 Debug1: Eingehend komprimieren: Rohdaten 1467, komprimiert 999, Faktor 0,68 gaurav@ubuntu:~$
Hier können wir leicht beobachten, dass mit der -C
Option mit der scp
-Befehl hat es uns ermöglicht, die Datei über das Netzwerk zu komprimieren, was sich als zeitsparende Option erwiesen hat.
Verwenden eines anderen SSH-Ports für die Dateiübertragung
Während der Verwendung des scp
Befehl der bereitgestellte Standardport ist der Port 22
. Der Benutzer hat die Freiheit, diese Portauswahl anzupassen. Du kannst den ... benutzen -P
(Option in Großbuchstaben P) mit dem scp
Befehl, um den Port Ihrer Wahl zu verwenden.
Allgemeine Syntax:
cp -P [neue_Portnummer] [Dateiname/Verzeichnisname] entfernter_Benutzer@Host:[Zielordner]
Beispiel:
scp -P 4248 dlink [email protected]:team
Mit dem obigen Befehl wird die Datei auf den Remote-Server übertragen. Aber dieses Mal wird der verwendete Port sein Port 4248
statt der Vorgabe Port 22
.
Fazit
Nachdem wir dieses Tutorial durchgearbeitet haben, haben wir die dynamische Natur der scp
Befehl zum Übertragen oder Kopieren von Dateien von einem System auf ein anderes. Diese Option kann auch verwendet werden, um Dateien oder Verzeichnisse vom Remote-Server herunterzuladen. Daraus können wir schließen, dass scp
Der Befehl erweist sich bei Dateiübertragungen als sehr hilfreich, wenn Sie mehr als ein System sowie Remote-Server gleichzeitig verwalten müssen.