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, scp
kann dies eine sehr gute Möglichkeit sein, die Dateien und Verzeichnisse sicher zu übertragen. Wenn die beiden kommunizierenden Maschinen über dasselbe Netzwerk verbunden sind, wird die Verwendung scp
möglich.
Sie können sich in scp
Bezug auf Vertraulichkeit und Integrität stark auf den Befehl verlassen, 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, den Datenverkehr während dieser Übertragung auszuspionieren.
In diesem Tutorial sehen wir verschiedene Beispiele für den scp
Befehl. Wir werden uns auch einige der häufig verwendeten Optionen mit dem scp
Befehl ansehen .
Erste Schritte mit dem scp-Befehl
Mit dem 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] [source_file_name] [[email protected]_Host]:destination_folder
Lassen Sie uns die grundlegenden Attribute dieses Befehls nacheinander verstehen.
- [source_file_name] Dies ist die Quelldatei, die Sie kopieren möchten.
- [ [email protected] _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 verwendet.
- [Zielordner] Dies ist das Verzeichnis, in dem Sie die kopierte Datei speichern möchten.
Hinweis: Der Doppelpunkt ( :
) wird in der Syntax verwendet, da er zwischen lokalen und entfernten Standorten unterscheidet. Wir verwenden den Doppelpunkt ( :
) beim 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, die mit dem scp
Befehl verwendet werden, 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 vom scp Befehl verwendeten Standardport |
Häufig verwendete Optionen mit dem Befehl scp
Wir werden die Beispiele für diese Optionen weiter unten im Tutorial sehen.
Kopieren einer Datei vom lokalen auf ein entferntes 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 [file_name] [email protected]:[destination_folder]
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 entfernte System, dessen IP-Adresse '143.110.178.221' lautet.
Auf dem entfernten System wird die Datei nun in das Verzeichnis namens 'gaurav' kopiert.
Ausgabe:
[email protected]:~$ scp apache-tomcat-9.0.8.tar.gz [email protected]:gaurav
[email protected]'s password:
apache-tomcat-9.0.8.tar.gz 100% 9589KB 79.8KB/s 02:00
[email protected]:~$
Lassen Sie uns die Ausgabe auf dem Remote-System auf die Datei überprüfen.
[email protected]:~/gaurav# ls
apache-tomcat-9.0.8.tar.gz
[email protected]:~/gaurav#
Somit wird die Datei mit dem scp
Befehl erfolgreich auf das entfernte System kopiert .
Kopieren mehrerer Dateien auf ein Remote-System
Im vorherigen Beispiel haben wir gelernt, eine Datei mit dem scp
Befehl auf das Remote-System zu übertragen . Wir sehen nun die Methode zum Übertragen mehrerer Dateien von Ihrem lokalen System auf ein Remote-System mit diesem Befehl.
Allgemeine Syntax:
scp [file 1] [file 2] [file n] [email protected]_host:[specific directory]
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:
[email protected]:~$ scp ath.html abc.txt ppa-purge_0.2.8+bzr56_all.deb [email protected]:gaurav
[email protected]'s password:
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
[email protected]:~$
Auf dem Remote-System:
[email protected]:~/gaurav# ls -l
total 9800
-rw-r--r-- 1 root root 0 Oct 5 08:58 abc.txt
-rw-r--r-- 1 root root 9818695 Oct 5 08:35 apache-tomcat-9.0.8.tar.gz
-rw-r--r-- 1 root root 204057 Oct 5 08:58 ath.html
-rw-r--r-- 1 root root 4360 Oct 5 08:58 ppa-purge_0.2.8+bzr56_all.deb
[email protected]:~/gaurav#
Alle drei Dateien werden nun auf das entfernte System kopiert.
Kopieren eines Verzeichnisses auf das Remote-System
Sie können den scp
Befehl verwenden, um ein Verzeichnis von Ihrem lokalen System auf das entfernte System zu kopieren. Der Vorgang ist ähnlich wie beim Kopieren einer Datei. Um auch den Inhalt des Verzeichnisses zu kopieren, können Sie die -r
Option mit dem scp
Befehl verwenden.
Die -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 [directory path] [email protected]_host:[target_directory]
Beispiel:
scp -r PycharmProjects [email protected]:gaurav
Ausgabe:
[email protected]:~$ scp -r PycharmProjects [email protected]:gaurav
[email protected]'s password:
__main__.py 100% 623 7.8KB/s 00:00
__init__.py 100% 23 0.4KB/s 00:00
completion.py 100% 2929 28.1KB/s 00:00
search.py 100% 4728 38.7KB/s 00:00
uninstall.py 100% 2963 32.5KB/s 00:00
hash.py 100% 1681 21.3KB/s 00:00
check.py 100% 1430 16.8KB/s 00:00
configuration.py 100% 7125 50.4KB/s 00:00
show.py 100% 6289 49.8KB/s 00:00
download.py 100% 6623 48.2KB/s 00:00
[email protected]:~$
Wenn Sie die -r
Option mit dem scp
Befehl verwenden, werden alle Unterordner und Dateien innerhalb des Verzeichnisses vom lokalen Computer auf das Remote-System kopiert.
Detaillierte Informationen zum scp-Prozess anzeigen
Sie können die Option -v
(Kleinbuchstabe v
) verwenden, 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 [file_name] [email protected]_host:
Beispiel:
scp -v apache-tomcat-9.0.8.tar.gz [email protected]:team
Ausgabe:
[email protected]:~$ scp -v apache-tomcat-9.0.8.tar.gz [email protected]:team
Executing: program /usr/bin/ssh host 159.89.170.11, user root, command scp -v -t team
OpenSSH_7.6p1 Ubuntu-4ubuntu0.3, OpenSSL 1.0.2n 7 Dec 2017
debug1: Reading configuration data /home/gaurav/.ssh/config
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to 159.89.170.11 [159.89.170.11] port 22.
debug1: Connection established.
debug1: key_load_public: No such file or directory
debug1: identity file /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: channel 0 rtype exit-status reply 0
debug1: channel 0: free: client-session, nchannels 1
debug1: fd 0 clearing O_NONBLOCK
debug1: fd 1 clearing O_NONBLOCK
Transferred: sent 9826736, received 4016 bytes, in 97.2 seconds
Bytes per second: sent 101133.9, received 41.3
debug1: Exit status 0
[email protected]:~$
Hier in der Ausgabe können Sie sehen, dass die Debug-Informationen der Datei auf Ihrem Terminal angezeigt werden, wenn der scp
Befehl mit der -v
Option verwendet wird.
Übertragen von Dateien zwischen zwei Remote-Hosts
Linux ermöglicht es Ihnen, sich mit mehreren Remote-Hosts zu verbinden. Mit dem scp
Befehl können Sie Dateien und Verzeichnisse zwischen zwei entfernten Hosts übertragen .
Allgemeine Syntax:
scp [email protected]_1:/[file_name] [email protected]_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:
[email protected]:~$ scp -r [email protected]:/gaurav [email protected]:/team
[email protected]'s password:
1.py 100% 134 261.3KB/s 00:00
variables.py 100% 377 949.2KB/s 00:00
abc.txt 100% 0 0.0KB/s 00:00
ath.html 100% 199KB 41.8MB/s 00:00
[email protected]:~$
Hier haben wir den scp
Befehl auf dem lokalen System verwendet, 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 mit dem scp
Befehl vom Remote-System auf Ihr lokales System übertragen . In einfacheren Worten können Sie mit dem scp
Befehl mehrere Dateien oder Verzeichnisse vom Remote-Server auf Ihr lokales System herunterladen .
Allgemeine Syntax:
scp [email protected]_host:/files/file.txt /[folder_of_local_system]
Ausgabe:
[email protected]:~$ scp [email protected]:how.txt .
[email protected]'s password:
how.txt 100% 11 0.1KB/s 00:00
[email protected]:~$
Hier habe ich die Datei vom Remote-Server in mein Home-Verzeichnis heruntergeladen (kopiert). Daher habe ich Punkt ( .
) verwendet, um im Befehl anzugeben, dass die Datei in mein Home-Verzeichnis kopiert werden soll.
Beispielausgabe:
[email protected]:~$ ls -l how.txt
-rw-r--r-- 1 gaurav gaurav 11 Oct 6 09:49 how.txt
[email protected]:~$
Hier wird die Datei nun vom Remote-Server in mein Home-Verzeichnis kopiert.
Auf die gleiche Weise können Sie mit dem scp
Befehl mit den entsprechenden Optionen mehrere Dateien oder Verzeichnisse vom Remote-Server herunterladen .
Komprimieren von Dateien für schnellere Übertragungen
Manchmal kann die Übertragung großer Dateien zeitaufwändig sein. Dieses Problem kann behoben werden, wenn der scp
Befehl mit der Option -C
(Großbuchstaben C
) verwendet wird.
Mit der -C
Option werden größere Dateien komprimiert, 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 Übertragungsvorgangs die Größe komprimiert wird, um eine schnellere Übertragung zu ermöglichen. Somit erfolgt die Komprimierung nur im Netzwerk.
Allgemeine Syntax:
scp -C [file_name] [email protected]_host:[target_folder]
Sehen wir uns ein Vergleichsbeispiel an, um den Unterschied zu verstehen.
Übertragung ohne Option -C:
[email protected]:~$ scp -rv dlink [email protected]:team
Executing: program /usr/bin/ssh host 68.183.82.183, user root, command scp -v -r -t team
OpenSSH_7.6p1 Ubuntu-4ubuntu0.3, OpenSSL 1.0.2n 7 Dec 2017
debug1: Reading configuration data /home/trinity/.ssh/config
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to 68.183.82.183 [68.183.82.183] port 22.
debug1: Connection established.
debug1: client_input_channel_req: channel 0 rtype exit-status reply 0
debug1: channel 0: free: client-session, nchannels 1
debug1: fd 0 clearing O_NONBLOCK
debug1: fd 1 clearing O_NONBLOCK
Transferred: sent 7516504, received 4008 bytes, in 74.6 seconds
Bytes per second: sent 100693.7, received 53.7
debug1: Exit status 0
[email protected]:~$
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 zu beobachten.
Übertragung mit Option -C:
[email protected]:~$ scp -Crv dlink [email protected]:team
Executing: program /usr/bin/ssh host 68.183.82.183, user root, command scp -v -r -t team
OpenSSH_7.6p1 Ubuntu-4ubuntu0.3, OpenSSL 1.0.2n 7 Dec 2017
debug1: Reading configuration data /home/trinity/.ssh/config
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to 68.183.82.183 [68.183.82.183] port 22.
debug1: Connection established.
.
.
webupload.img 100% 1834KB 98.7KB/s 00:18
Sending file modes: C0664 1877552 router.img
Sink: C0664 1877552 router.img
router.img 100% 1834KB 100.3KB/s 00:18
Sink: E
Sending file modes: C0664 3754103 DSL-2750U-Release-IN-T-01.00.07.zip
Sink: 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: channel 0 rtype exit-status reply 0
debug1: channel 0: free: client-session, nchannels 1
debug1: fd 0 clearing O_NONBLOCK
debug1: fd 1 clearing O_NONBLOCK
Transferred: sent 7518864, received 3828 bytes, in 51.0 seconds
Bytes per second: sent 100245.4, received 51.0
debug1: Exit status 0
debug1: compress outgoing: raw data 7511925, compressed 7513136, factor 1.00
debug1: compress incoming: raw data 1467, compressed 999, factor 0.68
[email protected]:~$
Hier können wir leicht feststellen, dass die Verwendung der -C
Option mit dem scp
Befehl es uns ermöglicht hat, die Datei über das Netzwerk zu komprimieren, was sich als zeitsparende Option erwiesen hat.
Verwenden eines anderen SSH-Ports für die Dateiübertragung
Bei Verwendung des scp
Befehls ist der bereitgestellte Standardport die port 22
. Der Benutzer hat die Freiheit, diese Portauswahl anzupassen. Sie können die -P
Option (Option in Großbuchstaben P) mit dem scp
Befehl verwenden, um den Port Ihrer Wahl zu verwenden.
Allgemeine Syntax:
cp -P [new_port_number] [file_name/directory_name] [email protected]:[destination_folder]
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 port 4248
anstelle des Standard- Ports verwendet port 22
.
Abschluss
Nachdem wir dieses Tutorial durchgearbeitet haben, haben wir die dynamische Natur des scp
Befehls kennengelernt, der verwendet wird, um Dateien von einem System auf ein anderes zu übertragen oder zu kopieren. Diese Option kann auch verwendet werden, um Dateien oder Verzeichnisse vom Remote-Server herunterzuladen. Daraus können wir schließen, dass sich der scp
Befehl für Dateiübertragungen als sehr hilfreich erweist, wenn Sie mehr als ein System sowie Remote-Server gleichzeitig verwalten müssen.