ubuntuusers.de

Dateiauswahl direkt per SSH kopieren mit exec Befehl

Status: Gelöst | Ubuntu-Version: Ubuntu 18.04 (Bionic Beaver)
Antworten |

Wolfmann

Anmeldungsdatum:
7. Oktober 2018

Beiträge: 346

Hallo,

ich hoffe, dass ich mit meinem Thema hier richtig bin:

Ich wollte aus einem Verteichnis alle Text Dateien anzeigen lassen und diese dann auf einen Server per SSH kopieren. Man muss eventuell noch dazusagen, dass der Server über einen Tunnel zugeschaltet ist. Versucht habe ich folgendes

1
find -iname '*.txt' -exec scp {} -P 9001  admin@localhost:/mnt/raid/

Ich erhalte aber leider die Meldung: Fehlendes Argument für -exec

Kann mir jemand erklären, was ich verkehrt machen.

Vielen Dank.

Doc_Symbiosis

Avatar von Doc_Symbiosis

Anmeldungsdatum:
11. Oktober 2006

Beiträge: 4450

Wohnort: Göttingen

Du kannst das find auch einfach weglassen:

scp -P 9001  *.txt admin@localhost:/mnt/raid/

Das -P muss denke ich nach vorne...

So dürfte es auch schneller und sparsamer laufen, da nicht pro Datei eine Extra ssh-Session aufgebaut wird...

Wolfmann

(Themenstarter)

Anmeldungsdatum:
7. Oktober 2018

Beiträge: 346

Doc_Symbiosis schrieb:

Du kannst das find auch einfach weglassen:

scp -P 9001  *.txt admin@localhost:/mnt/raid/

Das -P muss denke ich nach vorne...

So dürfte es auch schneller und sparsamer laufen, da nicht pro Datei eine Extra ssh-Session aufgebaut wird...

Super, so funktioniert es.

Frage interessehalber: Könnte man das dennoch mit dem find-Befehl bewerkstelligen? Denn wenn man z.B. nur Dateien eines bestimmten Datums kopieren möchte, bräuchte man ja find...

Doc_Symbiosis

Avatar von Doc_Symbiosis

Anmeldungsdatum:
11. Oktober 2006

Beiträge: 4450

Wohnort: Göttingen

Bei dem find müsstest Du noch ein \; ans Ende setzen.

Und um das {} solltest Du noch doppelte Anführungsstriche setzen, damit das Ganze auch funktioniert, wenn die Dateinamen Leerzeichen enthalten.

Wolfmann

(Themenstarter)

Anmeldungsdatum:
7. Oktober 2018

Beiträge: 346

Doc_Symbiosis schrieb:

Bei dem find müsstest Du noch ein \; ans Ende setzen.

Und um das {} solltest Du noch doppelte Anführungsstriche setzen, damit das Ganze auch funktioniert, wenn die Dateinamen Leerzeichen enthalten.

Habe es mal so versucht:

1
find -iname '*.txt'\ -exec scp -P 9001 "{}" admin@localhost:/mnt/raid/

Jetzt kommt die Meldung: Pfade müssen dem Ausdruck 'scp' vorangestellt werden.

Doc_Symbiosis

Avatar von Doc_Symbiosis

Anmeldungsdatum:
11. Oktober 2006

Beiträge: 4450

Wohnort: Göttingen

Das ist aber nicht das Ende und auch kein \; 😛 . So sollte das funktionieren:

find -iname '*.txt' -exec scp -P 9001 "{}"  admin@localhost:/mnt/raid/ \;

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17604

Wohnort: Berlin

Doc_Symbiosis schrieb:

Das ist aber nicht das Ende und auch kein \; 😛 . So sollte das funktionieren:

find -iname '*.txt' -exec scp -P 9001 "{}"  admin@localhost:/mnt/raid/ \;

Und wenn es ohne Anführungsstriche nicht funktioniert, dann sag bitte Bescheid, ich suche noch immer (seit ca. 2014) nach einem Beispiel, bei dem man die Anführungsstriche wirklich braucht. Vielleicht bei einem Shellaufruf als Layer außenrum oder innendrin.

find -iname '*.txt' -exec scp -P 9001 {} admin@localhost:/mnt/raid/ \;

Und der Admin auf localhost heißt admin, nicht root? Sachen gibt's! ☺

Wolfmann

(Themenstarter)

Anmeldungsdatum:
7. Oktober 2018

Beiträge: 346

user_unknown schrieb:

Doc_Symbiosis schrieb:

Das ist aber nicht das Ende und auch kein \; 😛 . So sollte das funktionieren:

find -iname '*.txt' -exec scp -P 9001 "{}"  admin@localhost:/mnt/raid/ \;

Und wenn es ohne Anführungsstriche nicht funktioniert, dann sag bitte Bescheid, ich suche noch immer (seit ca. 2014) nach einem Beispiel, bei dem man die Anführungsstriche wirklich braucht. Vielleicht bei einem Shellaufruf als Layer außenrum oder innendrin.

find -iname '*.txt' -exec scp -P 9001 {} admin@localhost:/mnt/raid/ \;

Und der Admin auf localhost heißt admin, nicht root? Sachen gibt's! ☺

Ok, danke. Werde ich morgen gleich mal ausprobieren und Rückmeldung geben.

P.S.: admin ist ein Standardnutzer; das root-Konto wird ja normalerweise nicht genutzt...

Wolfmann

(Themenstarter)

Anmeldungsdatum:
7. Oktober 2018

Beiträge: 346

user_unknown schrieb:

Doc_Symbiosis schrieb:

Das ist aber nicht das Ende und auch kein \; 😛 . So sollte das funktionieren:

find -iname '*.txt' -exec scp -P 9001 "{}"  admin@localhost:/mnt/raid/ \;

Und wenn es ohne Anführungsstriche nicht funktioniert, dann sag bitte Bescheid, ich suche noch immer (seit ca. 2014) nach einem Beispiel, bei dem man die Anführungsstriche wirklich braucht. Vielleicht bei einem Shellaufruf als Layer außenrum oder innendrin.

find -iname '*.txt' -exec scp -P 9001 {} admin@localhost:/mnt/raid/ \;

Und der Admin auf localhost heißt admin, nicht root? Sachen gibt's! ☺

Funktioniert auch wunderbar ohne Anführungszeichen.

Nochmal danke für die Hilfe.

Antworten |