Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : scp für mehrere dateien anwenden !!!



mr-sansibar
01-10-2007, 15:04
Hallo!
ich möchte mit dem scp Befehl mehrere Dateien aus unterschiedlichen Ordner in ein anderes Verzeichnis in einem anderem Server kopieren ?

dieser befehl kopiert mir nur ein einzige datei ???

scp -r /ordner1/ordner2/*/*test.tar server:/ordner1/ordner2/ordner3/.

Vielen Dank !

jan61
01-10-2007, 19:08
scp -r /ordner1/ordner2/*/*test.tar server:/ordner1/ordner2/ordner3/.


Die Option -r ist in diesem Fall zumindest überflüssig, Du gibst ja Dateien und keine Ordner an. Was sagt ein "ls /ordner1/ordner2/*/*test.tar"?

Jan

mr-sansibar
02-10-2007, 11:19
ich bekomme die meldung:

-bash: /usr/bin/ls: Arg list too long

jan61
02-10-2007, 17:29
ich bekomme die meldung:

-bash: /usr/bin/ls: Arg list too long

Tja, das ist eindeutig. Es sind zu viele Dateien, der Puffer für die Kommandozeile ist zu klein. Versuche mal, das in mehrere kleinere Happen aufzuteilen, z. B. so:

for d in /ordner1/ordner2/*; do
test -d "$d" || continue
scp $d/*test.tar server:/ordner1/ordner2/ordner3/
doneJan

mr-sansibar
02-10-2007, 22:41
vielen dank !
würde er nicht bei jeden schleifen durchlauf nach dem passwort fragen ?

BLUESCREEN3D
03-10-2007, 17:50
würde er nicht bei jeden schleifen durchlauf nach dem passwort fragen ?
Wenn du das sonst auch eingeben musst: Ja.
Dagegen kannst du einen Key auf den Server packen - dann musst du kein Passwort mehr eingeben (such bei linuxforen.de danach).

Oder pack einfach die Dateien mit z.B. tar, lade das Archiv hoch und entpack es wieder.

mr-sansibar
04-10-2007, 08:50
Tja, das ist eindeutig. Es sind zu viele Dateien, der Puffer für die Kommandozeile ist zu klein. Versuche mal, das in mehrere kleinere Happen aufzuteilen, z. B. so:

for d in /ordner1/ordner2/*; do
test -d "$d" || continue
scp $d/*test.tar server:/ordner1/ordner2/ordner3/
doneJan

Und zwar hab ich Deine Lösung etwas geändert !

set -x
for d in /ordner1/ordner2/*; do
test -d "$d" || continue
scp $d/*20070930*.tar server1:/ordner1/ordner2/ordner3/
done

Aber es tut sich nicht und es erscheint nicht mal eine Meldung ?

jan61
07-10-2007, 10:59
Und zwar hab ich Deine Lösung etwas geändert !

set -x
for d in /ordner1/ordner2/*; do
test -d "$d" || continue
scp $d/*20070930*.tar server1:/ordner1/ordner2/ordner3/
doneAber es tut sich nicht und es erscheint nicht mal eine Meldung ?

Dann setze doch mal vor den "test -d ..." ein "echo $d", damit Du siehst, ob und was er findet.

Eine andere Möglichkeit (ich kenne ja Deine Verzeichnisstruktur nicht):

find /ordner1/ordner2 -mindepth 1 -maxdepth 1 -type d -print | while read d; do echo $d; doneDamit kannst Du Dir erstmal angucken, welche Unterverzeichnisse es unter /ordner1/ordner2 gibt.

Jan