So verwenden Sie den scp-Befehl unter Linux
Der Befehl scp
macht das Kopieren von Dateien zwischen Linux-Rechnern einfach und sicher. Es verwendet SSH-Sicherheit, aber das Beste daran ist, dass es einfach ist. Wenn Sie verwenden können cp
, können Sie verwenden scp
.
Secure Copy Protocol und scp
Lassen Sie uns ein paar Begriffe definieren: Es gibt SCP und es gibt scp
. Der Großbuchstabe SCP steht für Secure Copy Protocol . Kleinbuchstaben scp
bedeutet sicher cp
. Mit anderen Worten, SCP ist ein Protokoll und scp
ein Programm.
scp
wurde als sicheres Mittel zum Kopieren von Dateien zwischen Remote-Linux-Computern entwickelt. Es verwendet SSH, um sichere Verbindungen herzustellen. SSH oder Secure Shell ist ein kryptografisches Netzwerkprotokoll, das häufig für den Zugriff auf und die Anmeldung bei Remote-Linux-Computern verwendet wird. Auf Linux-Distributionen wird die SSH-Funktionalität von OpenSSH bereitgestellt.
SCP ist etwas veraltet, und es wurden heutzutage Bedenken hinsichtlich seiner Verwendung geäußert. Ab OpenSSH 8.8 ist SCP veraltet. Moderne Implementierungen scp
verwenden standardmäßig das sichere Dateiübertragungsprotokoll. SSH wird immer noch für sichere Verbindungen verwendet, aber Dateiübertragungen werden über SFTP durchgeführt. Es ist alles unsichtbar und passiert auf magische Weise unter der Haube, und die scp
Syntax bleibt gleich.
Dieses rsync
Programm wird bevorzugt scp
, aber Sie können auf einen Computer stoßen, auf dem es nicht rsync
installiert ist und für den Sie keine Root-Rechte haben, was bedeutet, dass Sie es nicht installieren können. Zum Kopieren von Dateien von PC zu PC in einem Offline-Netzwerk scp
ist es in Ordnung. Um zu scp
funktionieren, muss SSH auf allen Computern ausgeführt werden, auf die und von denen kopiert werden soll.
Geben Sie Folgendes ein, um die auf Ihrem Computer installierte Version von OpenSSH anzuzeigen:
ssh -V
Kopieren einer einzelnen Datei
Kopiert wie der Standardbefehl Dateien vom Quellspeicherort zum Ziel cp
. scp
Um eine Datei auf einen Remote-Computer zu kopieren, müssen Sie die IP-Adresse oder den Netzwerknamen des Remote-Computers kennen. Sie müssen außerdem über Anmeldeinformationen für ein Benutzerkonto mit Schreibberechtigungen für den Speicherort verfügen, an den Sie die Datei hochladen.
Verwenden Sie die folgende Syntax, um eine Datei namens „sample.txt“ an einen Computer namens „fedora-34“ im lokalen Netzwerk zu senden:
scp. /sample.txt dave@fedora-34.local:/home/dave/Downloads/
Das Team besteht aus:
- scp: scp-Befehl
- ./sample.txt: Die Datei, die wir senden werden. Es befindet sich im aktuellen Verzeichnis.
- dave@: Das Benutzerkonto auf dem Remote-Rechner, an den wir die Datei senden werden.
- fedora-34.local: Der Netzwerkname des entfernten Computers.
- :/home/dave/Downloads/: Der Speicherort zum Kopieren der Datei auf den Remote-Rechner. Beachten Sie den Doppelpunkt „:“, der den Computernamen und den Pfad voneinander trennt.
Sie werden aufgefordert, das Passwort für das Konto auf dem Remote-Computer einzugeben, woraufhin die Datei kopiert wird.
Wenn Sie möchten, dass die Datei auf dem Remote-Computer einen anderen Namen hat, können Sie den Dateinamen an den Zielpfad anhängen. Um dieselbe Datei zu kopieren und sie „andere-datei.txt“ zu nennen, verwenden Sie die folgende Syntax:
scp. /sample.txt dave@fedora-34.local:/home/dave/Downloads/different-file.txt
Der Befehl scp
überschreibt automatisch vorhandene Dateien, seien Sie also vorsichtig, wenn Sie Dateien kopieren. Wenn auf dem Zielcomputer bereits eine Datei mit demselben Namen wie die kopierte Datei vorhanden ist, wird sie überschrieben und geht verloren.
Wenn der Zielcomputer nicht den standardmäßigen SSH-Port 22 verwendet, können Sie den -P
Parameter (Portnummer) verwenden, um die entsprechende Portnummer anzugeben.
Eine Datei erhalten
Um eine Datei von einem entfernten Server zu kopieren, geben Sie einfach den entfernten Server als Quelle und den lokalen Pfad, in den Sie die Datei kopieren möchten, als Ziel an. Wir werden eine Datei mit dem Namen „development-plan.md“ von der Remote-Maschine in das aktuelle Verzeichnis auf der lokalen Maschine kopieren.
scp dave@fedora-34.local:/home/dave/Downloads/development-plan.md.
Wenn Sie dem lokalen Pfad einen Dateinamen hinzufügen, wird die Datei kopiert und erhält diesen Namen.
scp dave@fedora-34.local:/home/dave/Downloads/development-plan.md. /dp-1.md
Die Datei wird kopiert, aber in den von uns angegebenen Dateinamen umbenannt.
ls -hl *.md
Kopieren mehrerer Dateien
Das Kopieren mehrerer Dateien in eine beliebige Richtung ist sehr einfach. Sie können beliebig viele Quelldateien auflisten. Hier kopieren wir zwei Markdown-Dateien und eine CSV-Datei.
scp. /dp-1.md. /dp-2.md. /dp-3.csv dave@fedora-34.local:/home/dave/Downloads/
Drei Dateien werden auf den Remote-Computer kopiert. Sie können auch Platzhalter verwenden. Dieser Befehl macht dasselbe wie der vorherige Befehl.
scp. /dp. dave@fedora-34.local:/home/dave/Downloads/
Rekursives Kopieren von Verzeichnissen
Mit der -r
Option (rekursiv) können Sie ganze Verzeichnisbäume mit einem einzigen Befehl kopieren. Wir haben zwei Dateien in einem Verzeichnis namens „data“ abgelegt und ein Verzeichnis namens „CSV“ innerhalb des Verzeichnisses „data“ erstellt. Wir haben die CSV-Datei im Verzeichnis „data/CSV“ abgelegt.
Dieser Befehl kopiert die Dateien und erstellt die Verzeichnisstruktur auf dem Remotecomputer neu.
scp -r. /data dave@fedora-34.local:/home/dave/Downloads/
Kopieren von Dateien zwischen Remote-Servern
Sie können sogar anweisen, scp
Dateien von einem Remote-Server auf einen anderen zu kopieren. Die Syntax ist ziemlich einfach. Sie geben den Kontonamen und die Netzwerkadresse des Quellservers sowie den Kontonamen und die Netzwerkadresse des Zielservers an. Die Dateien werden vom Quellserver kopiert und an einen Speicherort auf dem Zielserver kopiert.
Während die Syntax einfach ist, erfordert es etwas mehr Aufmerksamkeit, sicherzustellen, dass alles andere vorhanden ist. Offensichtlich muss der Speicherort, an den Sie versuchen, Dateien auf dem Remote-Server zu kopieren, für das Benutzerkonto zugänglich sein, das Sie in der Befehlszeile angegeben haben. Und dieses Benutzerkonto muss Schreibzugriff auf diesen Speicherort haben.
Eine subtilere Voraussetzung ist, dass der SSH-Zugriff zwischen Ihrem lokalen Computer und dem Quellcomputer sowie zwischen Quell- und Zielserver eingerichtet werden muss. Stellen Sie sicher, dass Sie SSH verwenden können, um sich vom Quellserver beim Zielserver anzumelden. Wenn dies nicht möglich ist, scp
können Sie keine Verbindung herstellen.
Das Einrichten von SSH-Schlüsseln, um einen authentifizierten, aber passwortlosen Zugriff zu ermöglichen, ist bei weitem die bevorzugte Methode. Die Verwendung von Passwörtern wird sehr schnell unübersichtlich und da Sie für jedes Benutzerkonto aufgefordert werden, ein Passwort einzugeben, können Sie den Vorgang nicht vollständig mit einem Skript automatisieren.
Wir richten SSH-Schlüssel für die Benutzerkonten ein, die wir auf jedem Remote-Server verwenden. Dies ermöglichte den beiden Benutzern einen nahtlosen SSH-Zugriff auf den anderen Server. Auf diese Weise können wir mit diesen beiden Benutzerkonten Dateien in beide Richtungen übertragen.
Um Dateien vom „davem“-Benutzerkonto auf dem Manjaro-Rechner zum „dave“-Konto auf dem Fedora-Rechner zu kopieren, indem ein scp
Befehl verwendet wird, der von unserem lokalen Ubuntu-Rechner ausgegeben wird, wird die folgende Syntax verwendet:
scp davem@manjaro20-0-1.local:/home/davem/man. dave@fedora-34.local:/home/dave/
Wir kehren stillschweigend zur Befehlszeile zurück. Es gibt keinen Hinweis darauf, dass etwas passiert ist. Unter der Annahme, dass keine Neuigkeiten gute Neuigkeiten sind, scp
melden wir nur Fehler für diese Remote-Kopie. Bei der Überprüfung des Fedora-Computers sehen wir, dass die Dateien vom Manjaro-Computer kopiert und abgerufen wurden.
Standardmäßig werden Dateien direkt vom Quellcomputer auf den Zielcomputer kopiert. Sie können dies mit der -3
Option (drei Wege) überschreiben.
Mit dieser Option werden Dateien über Ihren lokalen Computer vom Ziel zur Quelle übertragen. Dies erfordert einen nahtlosen SSH-Zugriff von Ihrem lokalen Computer auf den Zielcomputer.
scp -3 davem@manjaro20-0-1.local:/home/davem/man. dave@fedora-34.local:/home/dave/
Es gibt immer noch keinen Hinweis darauf, dass etwas passiert ist, selbst wenn Dateien über Ihren lokalen Computer übertragen werden. Der Beweis für den Pudding ist natürlich die Überprüfung des Zielcomputers.
Andere Optionen
Die -p
Option (Dateiattribute beibehalten) behält die ursprüngliche Dateierstellung, den Eigentümer und die Zugriffs-Flags für hochgeladene Dateien bei. Sie haben dieselben Metadaten wie die Originaldateien auf dem Quellcomputer.
Wenn Fehlermeldungen angezeigt werden, versuchen Sie, den Befehl erneut auszuführen, und verwenden Sie das -v
Flag (verbose), um Details zum Übertragungsversuch anzuzeigen. Sie sollten in der Lage sein, den Fehlerpunkt in der Ausgabe zu bestimmen.
Die -C
Option (komprimieren) komprimiert Dateien, während sie kopiert werden, und dekomprimiert sie, wenn sie empfangen werden. Dies ist etwas, das auf die Ära der langsamen modernen Kommunikation zwischen Computern zurückgeht. Das Reduzieren der Nutzlastgröße kann die Übertragungszeit verkürzen.
Derzeit ist der Zeitaufwand für das Komprimieren und Dekomprimieren von Dateien wahrscheinlich größer als der Unterschied zwischen komprimierten und unkomprimierten Übertragungen. Da scp
es jedoch am besten zum Kopieren von Dateien zwischen Computern im selben lokalen Netzwerk verwendet wird, sollte die Übertragungsgeschwindigkeit kein großes Problem darstellen.
Schreibe einen Kommentar