expect+rsync实现双向同步

post by rocdk890 / 2013-8-13 17:28 Tuesday linux技术
  一直在找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
夜空- 本站版权
1、本站所有主题由该文章作者发表,该文章作者与夜空享有文章相关版权
2、其他单位或个人使用、转载或引用本文时必须同时征得该文章作者和夜空的同意
3、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
4、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
5、原文链接:blog.slogra.com/post-419.html

标签: linux 同步 rsync expect 双向

评论: