我有一个期望的脚本,我已经写在最后调用scp将大文件从服务器A复制到服务器B.
我遇到的问题(使用rsync而不是scp )是期望脚本在文件传输完成之前终止。 我知道,我可以设置超时预期,但随着文件的大小增长,超时。
有没有人遇到这个问题,并有一个等待function,我可以使用期望?
非常感谢。
根据http://oreilly.com/catalog/expect/chapter/ch03.html ,你可以简单地设置timeout为-1来禁用超时机制。
两件事情,第一,是的,如果你不想set timeout -1 , set timeout -1 。
其次,您应该使用wait来允许scp或rsync命令完成。 简单地等待永远不会是健壮的…
最后一个评论,我曾经是一个scp用户,但是已经真正成长为喜欢rsync的三angular洲,局部和稀疏的 abilites了。 有了这些,即使转移是双向连接的,它可以在停止的地方回收,这有时是非常有用的,特别是如果永远等待的话)。
就像是:
rsync -a -v -i --timeout=30 --stats --log-file="$LOG_FILE" --partial --exclude 'log*.txt' "$DATA_DIR"/"$DATE" $DEST:"$DEST_DIR"
(这从节点推到主)
传输大文件,点击networking等时可以节省一些严重的带宽