hugoundertaker
Goto Top

Kopieren über Netz

Hallo zusammen,

ich hatte bislang wenig mit dem Kopieren übers Netz zu tun und kenne mich nicht so damit aus. Folgender Vorgang:
Ich kopiere per WINSCP mit einer Batchdatei mehrer Dateien auf verschiedene Rechner(Windows auf Linux). Folgende Automatik: Rechner per WINSCP angewählt, Dateien kopiert, Schliessen, Neuer Rechner angewählt, Dateien kopiert, usw.
Batch:
open rechner-1
cd /opt/unter/test
bin
lcd G:\test
put datei1.txt
put datei2.txt
put datei3.text
cd ..
close
open rechner-2
usw
Es sind ca. 20 Rechner auf die die Dateien kopiert werden. Nun würde ich gerne hinterher wissen, ob das kopieren auch überall geklappt hat, bzw. wenn es abbricht, wie kann ich direkt dort wieder aufsetzten also bisher fängt er wieder von vorne an. Leider kann ich außer WinSCP oder Putty (davon nicht soviel Ahnung) keine anderen Programme einsetzen.

Schon mal danke für die Hilfe.
Gruß
Hugo

Content-Key: 191520

Url: https://administrator.de/contentid/191520

Printed on: April 26, 2024 at 21:04 o'clock

Member: colinardo
colinardo Sep 20, 2012 at 09:35:06 (UTC)
Goto Top
winscp hat eine LOG-Funkion Parameter : "/log <logdatei>" in der es aufzeichnet was schief gelaufen ist.
http://winscp.net/eng/docs/commandline

Teil die Kopieraktionen doch in 20 Skripte auf (für jeden Rechner einen) so fängt er nicht bei den anderen Rechnern wieder von vorne an.

Ich würde für solche Arbeiten das Tool "rsync" benutzen (gibt es auch für Windows) das überträgt nur die Teile einer Datei die sich auch wirklich vom Ziel unterscheiden und eignet sich auch für niedrige Bandbreiten.
http://www.chip.de/downloads/rSync_33633578.html
Member: hugoundertaker
hugoundertaker Sep 20, 2012 at 10:32:19 (UTC)
Goto Top
Hallo Softmeister,

was anderes als winscp geht leider nicht.

Wie meinst Du das mit den 20 Skripten? Hatte bisher damit nichts zu tun,
kenne mich deshalb damit nicht so aus. Also eigentlich sollen halt alle Rechner mit einem Klick nacheinander automatisch angewählt werden. Sonst immer per Hand sich einzuwählen ist halt sehr umständlich.
Trotzdem schonmal danke für das bisherige.

Gruß
Hugo
Member: colinardo
colinardo Sep 20, 2012 at 10:49:01 (UTC)
Goto Top
Folgende Abschnitte die du im Moment in einer Datei stehen hast für jeden Rechner jeweils in eine separate Datei speichern z.B. rechner-1.txt (also vom 'open' Befehl bis zum 'close' Befehl.

open rechner-1
cd /opt/unter/test
bin
lcd G:\test
put datei1.txt
put datei2.txt
put datei3.text
cd ..
close

Dann kommen in eine Batchdatei(z.B. "copy.cmd") folgende Befehle:
winscp.exe /console /log mylogfile.log /timeout=30 /script="rechner-1.txt"  
winscp.exe /console /log mylogfile.log /timeout=30 /script="rechner-2.txt"  
winscp.exe /console /log mylogfile.log /timeout=30 /script="rechner-3.txt"  
winscp.exe /console /log mylogfile.log /timeout=30 /script="rechner-4.txt"  
.
.
.
usw.

Bitte ließ Dir die Dokumentation zu den Komandozeilenoptionen über winscp im o.g. Link durch.

Grüße Uwe
Member: hugoundertaker
hugoundertaker Sep 21, 2012 at 12:42:07 (UTC)
Goto Top
Hallo Softmeister,

jetzt bin ich soweit, das ich den Errorlevelcode in dem Batch abfrage.

Ablauf:
Winscp /console /log mylogfile.log /timeout=30 /script=D:\Version3\winscp\rechner1.txt
if ERRORlevel 1 goto ERROR
Winscp /console /log mylogfile.log /timeout=30 /script=D:\Version3\winscp\rechner2.txt
if ERRORlevel 1 goto ERROR
usw
Jetzt erfolgt bei ERROR eine Auswahl ob zurück ins Hauptmenu oder beim nächsten Rechner weitergemacht werden soll.
Irgendwie finde ich kein Rücksprungmöglichkeit das er dann bei dem nächsten weitermacht. Gibt es irgendeinen Rücksprungbefehl?

Danke schonmal.
Gruß
Hugo
Member: colinardo
colinardo Sep 21, 2012 updated at 12:51:18 (UTC)
Goto Top
setz doch einfach vor jeden "winscp"-Befehl eine Sprungmarke:

:STARTPC1
Winscp /console /log mylogfile.log /timeout=30 /script=D:\Version3\winscp\rechner1.txt
if ERRORlevel 1 goto :STARTPC1
:STARTPC2
Winscp /console /log mylogfile.log /timeout=30 /script=D:\Version3\winscp\rechner2.txt
if ERRORlevel 1 goto :STARTPC2
.
.
.
.

du kannst den letzten Rechner bei dem es einen Fehler gabe auch in einer Variablen speichern

if errorlevel 1 (goto ERROR && set LASTERRORPC=STARTPC2)
.
.
goto %LASTERRORPC%
Member: hugoundertaker
hugoundertaker Sep 21, 2012 at 13:28:10 (UTC)
Goto Top
Hallo Softmeister,

eigentlich wollte ich das mit den Sprungmarken umgehen und dachte es gäbe einen einfacheren Weg. Aber nun gut dann halt mal die ganzen Sprungmarken eingeben.
Trotzdem besten Dank und ein schönes Wochenende
Hugo