fragen stichworte

Linux Expect Script wird zu früh beendet

Ich habe ein erwartetes Skript, das ich geschrieben habe, das am Ende scp aufruft, um eine große Datei von Server A auf Server B zu kopieren.

Mein Problem (das ist dasselbe mit rsync und nicht mit scp) ist, dass das Expect-Skript beendet wird, bevor die Dateiübertragung abgeschlossen ist. Ich weiß, dass ich das Timeout wie erwartet einstellen kann, aber mit zunehmender Dateigröße wird auch das Timeout größer.

Gibt es jemanden, der auf dieses Problem gestoßen ist, und gibt es eine Wartefunktion, die ich erwarten kann?

Vielen Dank.

antworten

Gemäß http://oreilly.com/catalog/expect/chapter/ch03.html können Sie einfach timeout auf -1 setzen, um den Timeout-Mechanismus zu deaktivieren.

Zwei Dinge, Nummer Eins, ja, set timeout -1, wenn Sie nicht wollen, dass es zu einem Timeout kommt.

Zweitens sollten Sie mit wait den Befehl scp oder rsync abschließen lassen. Einfach nur ewig warten ist bei weitem nicht so robust ...

Letzter Kommentar, ich war lange Zeit ein scp -Anwender, aber ich liebe es wirklich, das Delta, partielle und sparse Fähigkeiten von rsync. Selbst wenn die Übertragung unterbrochen wird, kann sie dort wieder aufholen, wo sie aufgehört hat, was manchmal sehr hilfreich ist ... vor allem, wenn Sie ewig warten;)

So etwas wie:

rsync -a -v -i --timeout=30 --stats --log-file="$LOG_FILE" --partial --exclude 'log*.txt' "$DATA_DIR"/"$DATE" $DEST:"$DEST_DIR"

(Dies drückt vom Knoten zum Master)

Dadurch kann beim Übertragen großer Dateien, fleckiger Netzwerke usw.

erhebliche Bandbreite eingespart werden