Kopieren mehrerer Dateien unter Linux

441
218

Ich habe eine Linux-Maschine mit numerischen Ordnern. Wie kann ich Bereiche dieser Ordner sicher auf einen anderen Server kopieren? Die Quellmaschine führt tcsh aus, die Ziel-Bash. Im Moment verwende ich aus dem Verzeichnis mit den Daten, die ich kopieren möchte, den folgenden Befehl:

scp -r [2042-2046] user@target:home/user/destination_folder 

Die Quellmaschine fragt nach meinem Kennwort für das Ziel und scheint Dateien zu kopieren, aber auf der Zielmaschine kommt nichts an. Es gibt keine Fehler. Wenn ich jedoch den Ordnerbereich durch einen einzelnen Ordnernamen ersetze, funktioniert das Kopieren einwandfrei:

scp -r 2042 user@target:home/user/destination_folder 

Dies würde jedoch bedeuten, dass Sie den Befehl scp fünfmal wiederholen und jedes Mal mein Passwort eingeben müssen. Dies ist besonders in größeren Bereichen sehr ineffizient.

1

3 Antworten auf die Frage

1
218

Die Reichweite

[2042-2046] 

scheint als Datei 2 und Datei 6 interpretiert zu werden.

Das Folgende gibt den erforderlichen Bereich an:

204[2-6] 
0
Fegnoid

Sie könnten einen Teerstream über SSH verwenden:

tar cvf --include='204[2-6]' - . | ssh user@target "cd /home/destination/folder; tar xvf -" 
0
glenn jackman

Verwenden Sie einen Bash- Brace-Erweiterungsausdruck :

scp -r user@target:home/user/destination_folder 

Beachten Sie, dass die Klammererweiterung vor der Parametererweiterung geschieht. Sie können also nicht Folgendes schreiben:

start=2042 end=2046 scp -r {$start..$end} user@target:home/user/destination_folder 

ohne ein eval