Назад | Перейти на главную страницу

Linux Expect Script завершается слишком рано

У меня есть сценарий ожидания, который я написал, что в конце вызывает scp для копирования большого файла с сервера A на сервер B.

У меня есть проблема (такая же, как при использовании rsync и нет scp) заключается в том, что ожидаемый сценарий завершается до завершения передачи файла. Я знаю, что могу установить тайм-аут в ожидании, но по мере увеличения размера файла время ожидания будет увеличиваться.

Есть ли кто-нибудь, кто сталкивался с этой проблемой, и есть ли функция ожидания, которую я могу использовать в ожидании?

Большое спасибо.

В соответствии с http://oreilly.com/catalog/expect/chapter/ch03.html, вы можете просто установить timeout к -1 для отключения механизма тайм-аута.

Две вещи, номер один, да, set timeout -1 если вы не хотите, чтобы он истек.

Во-вторых, вы должны использовать wait позволить scp или rsync команда для завершения. Просто ждать вечно не так надежно ...

Последний комментарий, я был scp пользователь в течение некоторого времени, но действительно полюбил дельта, частичная и редкий способности rsync. С ними, даже если передача отключена, она может возобновить работу с того места, где она была прервана, что иногда очень полезно ... особенно если все равно ждать вечно;)

Что-то вроде:

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

(Это подталкивает от узла к мастеру)

Это может значительно сэкономить полосу пропускания при передаче больших файлов, нестабильных сетях и т. Д.