Mehrere Dateien in einem Durchgang scp'en - zu mehreren Zielen auf einem Zielserver?


9

Ich möchte ungefähr ein halbes Dutzend Dateien in ein paar Verzeichnissen in die gleichen Verzeichnisse auf einem Zielcomputer scp.

Ist dies ohne Verwendung von SSH-Schlüsseln in einem Anruf möglich?

Beispielsweise:

scp /path/to/fileA,/anoth/erpath/to/fileB,/yet/more/files/*    #continue next line
    destination:/path/to,/anoth/erpath/to,/yet/more/files

Antworten:


8

Komprimieren Sie die Dateien auf der sendenden Seite und entpacken Sie sie auf der empfangenden Seite.

tar -cf - /path/to/fileA /anoth/erpath/to/fileB /yet/more/files/* |
ssh -C destination 'cd / && tar -xf -'

Sie können auch eine SFTP-Sitzung skripten oder rsync mit dem richtigen Filter verwenden.


Wenn Sie nur wenige Dateien haben, müssen Sie insgesamt kopieren, als ich die scp -rLösung schätze . aber für mehr ist das viel schneller.
Xaedes

4

Sie können von mehreren src zu einem Ziel kopieren. scp -r src1 src2 ... dst Aber nicht zu mehreren Zielen.

Eine Möglichkeit besteht darin, das gesamte Verzeichnis in ein temporäres Zielverzeichnis zu kopieren. Bewegen Sie sie anschließend zurück.


Dies funktioniert so gut wie die tar-ssh-Lösung. Außerdem ist es einfacher zu tippen / sich zu erinnern. Es gibt Ihnen auch Feedback, was hochgeladen wird. ABER wenn Sie viele kleine Dateien zum Kopieren haben, ist tar-ssh viel schneller, da nur eine große Datei übertragen werden muss, während scp-r jede Datei einzeln mit viel mehr Overhead kopiert.
Xaedes

1

Schauen Sie sich das psshPaket an. Es hat parallel-scpBefehl. -hMit dieser Option können Sie eine Textdatei mit mehreren Hosts als Ziel bereitstellen (einer pro Zeile).


Muss man das jedes Mal nach den Passwörtern fragen, wenn eine Datei von A nach B geht?
Warren

2
Dafür benutze ich ssh-add. Sie geben Ihre Anmeldeinformationen einmal am Anfang eines Tages ein. Dann werden Sie automatisch angemeldet.
Casual Coder

0

Ich verwende den folgenden Befehl, um mehrere Dateien an mehrere Ziele zu kopieren.

scp -r src {1,2,3} dest {1,2,3}

Dieser Befehl verhält sich wie der folgende Befehlssatz

scp -r src1 dest1

scp -r src1 dest2

.

.

.

scp -r src3 dest2

scp -r src3 dest3


Funktioniert nicht, wenn ich es versuche. ubuntu@landslide:~$ scp -r {test1,test2} landslide:/home/ubuntu/{test3,test4} scp: /home/ubuntu/test4: No such file or directoryDas Ziel soll ein Verzeichnis sein.
Sudo
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.