expect+rsync实现双向同步
一直在找rsync的双向同步的方法,今天居然找到个用shell脚本就可以搞定的方法,这里就共享给大家看看吧,免得跟我有一样需求的人还到处去找.
要求:
1.将192.168.1.103:/data/www/wwwroot/bbs.linuxtone.org/attachment 同步到本机
的/data/www/wwwroot/bbs.linuxtone.org/attachment 目录。
2.并且如果发现本机有文件更新,
也将其推送到192.168.1.103:/data/www/wwwroot/bbs.linuxtone.org/attachment目录,实现双向同步.
3.SSH的22端口被修改成了3231.用户名root,密码:52netseek
4.现求用expect+rsync实现同步.
#!/bin/bash ROOT="/data/www/wwwroot/bbs.linuxtone.org/" SITE="192.168.1.103" USER="root" PASSWORD="52netseek" RSYNC_OPTS="-e \\\"ssh -p3231 -o StrictHostKeyChecking=no\\\" -azuv" auto_rsync() { expect -c "eval spawn -noecho rsync --exclude .*.swp $RSYNC_OPTS $1 $2 match_max 10000k expect \"*?assword:*\" send -- \"$PASSWORD\r\" expect eof" } sync() { FILE=$(basename $1) DEST=$(dirname $1) # download remote site file to current location auto_rsync $USER@$SITE:$ROOT$FILE $DEST # update remote site file if newer than backup auto_rsync $1 $USER@$SITE:$ROOT } # Remote file Directory sync "/data/www/wwwroot/bbs.linuxtone.org/attachment"
本文来自:http://bbs.linuxtone.org/thread-2176-1-1.html
评论: