Kopieren von Dateien von einem Computer auf einen anderen mit ssh

Ich verwende einen Linux-Computer (Centos) und habe bereits mit ssh. Nun ist meine Frage, wie ich Dateien von einem System auf ein anderes System kopieren kann.

Angenommen, ich habe in meiner Umgebung zwei Systeme wie System A und System B. Ich verwende die Maschine System A und einige andere die Maschine System B machine.

Wie kann ich eine Datei von System B nach System A kopieren? Und kopieren Sie eine Datei von System A nach System B?

Kommentare

  • Ich finde, dass scp oft ein Holzstein ist. Wenn es Ihren Anforderungen entspricht, probieren Sie dies aus linuxjournal.com/article/8904 Das Remote-Dateisystem wird lokal bereitgestellt.
  • @Alan Ich denke du meinst “ umständlich „? Cumber Stone ist eine Magic -Karte;)
  • etwas verwandt: erstellt ein verschlüsseltes Archiv von local dir/ auf einem Remotecomputer mit ssh : tar -c dir/ | gzip | gpg -c | ssh user@remote 'dd of=dir.tar.gz.gpg'
  • Wenn Sie Zugriff auf das FTP des Remote-Servers haben, können Sie auch wget verwenden, um $wget -r --level=9 --no-parent --reject "index.html*" ftp://<USERID>:<PASSWORD>@<MACHINE-NAME>/path/to Referenz1 Referenz2
  • Nicht duplizierte, verknüpfte Frage fordert ausdrücklich auf, ; für diese eine scp ist in Ordnung und am einfachsten als Antwort, also entfernen Mods bitte doppelte Flaggen, als ob jemand zu einer anderen gehen würde, die nützlichste Antwort wird verpasst.

Antwort

Syntax:

scp <source> <destination> 

To Kopieren Sie eine Datei von B nach A, während Sie bei B angemeldet sind:

scp /path/to/file username@a:/path/to/destination 

So kopieren Sie eine Datei von B nach A, während Sie bei A:

scp username@b:/path/to/file /path/to/destination 

Kommentare

  • Zur Verdeutlichung verwenden Sie normalerweise Verwenden Sie ‚ nicht scp, um eine Datei auf oder von Ihrem lokalen Computer (System A) zu kopieren, während Sie bei einem Remote-Server (System) angemeldet sind B) mit ssh. scp meldet Sie beim Remote-Server an, kopiert die Datei und meldet Sie in einem Vorgang erneut ab. Führen Sie sie also einfach von einer Shell auf Ihrem lokalen Computer aus. Davon abgesehen können Sie scp verwenden, wenn Sie ‚ über SSH bei System B angemeldet sind und Dateien zwischen System B und System kopieren möchten C.
  • @DopeGhoti. Ja, Sie können ‚ keine Dateien zwischen zwei Remotecomputern verschieben. Entweder die Quelle oder das Ziel muss eine lokale Datei sein. Wenn Sie sich jedoch mit ssh bei einem Remotecomputer anmelden, können Sie Dateien zwischen zwei Remotecomputern auf der Befehlszeile des ‚ kopieren.
  • Außerdem Es ist wichtig zu wissen, dass Sie nur in einen Ordner auf dem Zielcomputer scp können, für den Sie Berechtigungen haben. Wenn Sie versuchen, es an ein Ziel zu kopieren, für das der Zielbenutzer keine Berechtigung hat, kopieren Sie zuerst die Datei in das Ausgangsverzeichnis oder Unterverzeichnis des Benutzers ‚ und dann in das Verzeichnis ssh Zielmaschine und sudo verschieben es zum endgültigen Ziel
  • Merken Sie sich -r (rekursiv) und -p (Systemmetadaten beibehalten): scp -rp < file1 > < file2 >
  • Ja, verwenden Sie -P, um den TCP-Port auf dem Remote-Host anzugeben. Dies fängt mich jedes Mal auf, weil ssh -p verwendet.

Answer

Falls Sie einen alternativen Ansatz benötigen.

Installieren Sie sshfs. Wenn Sie Ubuntu / Debian verwenden:

sudo apt-get install sshfs 

oder wenn Sie centos / rhel verwenden:

sudo yum install fuse-sshfs 

oder in macOS

brew install sshfs 

Erstellen Sie ein leeres Verzeichnis

mkdir /home/user/testdir 

„Link“ oder „Mount“ der beiden Verzeichnisse

sshfs [email protected]:/remote/dir /home/user/testdir 

„Verknüpfung aufheben“

fusermount -u /home/user/testdir 

Unter BSD und MacOS können Sie das Dateisystem aushängen:

umount mountpoint 

oder

diskutil unmount mountpoint 

Weitere Informationen finden Sie hier unter linuxjournal.com libfuse / sshfs

Kommentare

  • Die Frage besagt ausdrücklich, dass das betreffende Betriebssystem CentOS ist. nicht von Debian abgeleitet. apt-get ist ein Debianismus; Der richtige Paketmanager wäre yum oder für wirklich alte CentOS-Varianten up2date oder rpm.
  • +1 Die Antwort auf diese Frage mag außerhalb des Kontexts liegen, aber sie hat mir trotzdem geholfen, und soweit ich sehen kann, auch anderen.
  • Nicht verwandt, aber ‚ eine Million Dollar Antwort xD
  • Wenn ich das richtig verstehe, gibt dies Zugriff auf die entfernten Dateien, kopiert sie aber nicht?
  • @ ToolmakerSteve Sie ‚ sind vollkommen richtig: Es erstellt ein gefälschtes Verzeichnis (Mount), so dass Sie alle Ihre bevorzugten Tools zum Kopieren oder Verschieben von Dingen verwenden können: cp, mv, rm, rsync, unison … Der Befehl scp kann nur Dateien kopieren.

Antwort

Manchmal müssen Sie Lust auf Teer haben:

tar -C / -cf - \ opt/widget etc/widget etc/cron.d/widget etc/init.d/widget \ --exclude=opt/widget/local.conf | ssh otherhost tar -C / -xvf - 

Kommentare

  • Kreativität? So haben wir Bandlaufwerke gemeinsam genutzt. 🙂
  • Können Sie uns sagen, was dies bewirkt? Zum Beispiel habe ich keine Ahnung, was ‚ cron ‚ mit dem Kopieren von Dateien zu tun hat!
  • @aliqandil opt / Widget usw. / Widget usw. / cron.d / Widget usw. / init.d / Widget sind einzelne Dateien, die in das Tar-Archiv aufgenommen werden sollen. Der Punkt war zu veranschaulichen, warum man manchmal Lust bekommen muss. Diese Befehlsreihe überträgt das Tar-Archiv über eine SSH-Verbindung und hebt die Archivierung auf der anderen Seite auf. Somit wird niemals ein Teerarchiv auf die Festplatte geschrieben. Ich benutze dies manchmal, um Dateien auszuwählen, die in einem Befehl kopiert werden sollen.
  • Ow! Ich habe gelehrt, dass der erste ‚ / ‚ der Quellpfad war! (Was ist los?) Das war also eine dumme Frage! Vielen Dank. 🙂
  • Tar wird zu “ / “ chdir, daher sind alle folgenden Pfade relativ zu “ / „.

Antwort

Wenn Sie die Dateien auf beiden Systemen synchron halten möchten, sehen Sie sich das Programm rsync an:

(siehe Tutorial hier)

Kommentare

  • Dies ist ein echtes professionelles Tool.

Antwort

Wenn Sie eines der gemeinsamen Betriebssysteme haben, können Sie pigz installieren, das mit gzip identisch ist, außer dass mehrere Kerne verwendet werden und schneller über ein schnelles Netzwerk sein. Mein Befehl ist etwas anders.

tar cf - -C /opt -S <dir> | pigz | ssh <target> "pigz -d | tar xf - -C /opt -S" 

oder auf andere Weise zum Abrufen von Dateien

ssh <target> "tar cf - -C /opt -S <dir> | pigz" | pigz -d | tar xf - -C /opt -S 

oder sichern Sie die Root-Fs mit

ssh <target> "tar cf - -C / --one-file-system -S --numeric-owner . | pigz" > root.tgz 

Kommentare

Antwort

Eine einfachere Methode, die über SSH-gesteuerte NVIDIA Jetson-Computer funktioniert, besteht darin, eine Verbindung mit SFTP (SSH File Transfer Protocol) herzustellen.

Angenommen, ich möchte das Dokument UFO_blueprint.odt von den Remote-Servern der NASA und verschieben Sie es in meine Dokumente.

  1. cd an den Ort, an dem die Datei gespeichert werden soll
$ cd Documents 
  1. Connect
$ sftp sammy@your_server_ip_or_remote_hostname 
  1. Wechseln Sie in das Verzeichnis, das die zu übertragende Datei enthält.
$ cd NASA/secret_files/ 
  1. Übertragen Sie
$ get UFO_blueprint.odt 

Um das vollständige Verzeichnis abzurufen, verwenden Sie stattdessen

$ get -r secret_files/ 

Kommentare

  • Verwenden Sie put Befehl zum Hochladen von Dateien

Antwort

Rekursive Unix / Linux-Kopie von Dateien und Ordnern über eine sichere Shell mit dem folgenden Code:

scp -r <host@machine_name:from_remote_directory_path> <to_local_directory_path> 

Ein vollständiges Beispiel könnte folgendermaßen aussehen:

scp -r sizwe@hprobook:./home/sizwe/PycharmProjects ./home/immaculate/OtherPycharmProjects 

Hinweis: Wenn Sie keinen DNS-Server zum Auflösen von Hostnamen haben, verwenden Sie stattdessen Ihre IP-Adresse. Das obige Beispiel könnte folgendermaßen aussehen:

scp -r 192.168.43.167:./home/sizwe/PycharmProjects ./home/immaculate/OtherPycharmProjects 

Antwort

Wenn sie ausgeführt werden Stellen Sie bei SCP / SSH an einem anderen Port sicher, dass Sie die Portoption -P in Großbuchstaben angeben.

Beispiel:

 scp -P 7121 /users/admin/downloads/* [email protected]:/home/  

Kommentare

  • Diese Frage ist sieben Jahre alt und hat viele Antworten bereits. Zwar kann ssh nicht standardmäßige Ports verwenden, und die Option ssh client ‚ s -P ist dann erforderlich id = „9a2f56d62b“>

hilft bei dem vorliegenden Problem nicht wirklich. Konzentrieren Sie sich auf aktuelle Fragen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.