黑帽联盟

标题: expect+rsync实现双向同步 [打印本页]

作者: 定位    时间: 2017-3-28 22:55
标题: expect+rsync实现双向同步
一直在找rsync的双向同步的方法,今天居然找到个用shell脚本就可以搞定的方法,这里就共享给大家看看吧,免得跟我有一样需求的人还到处去找.

要求:
1.将192.168.1.103:/data/www/wwwroot/bbs.cnblackhat.com/attachment 同步到本机
的/data/www/wwwroot/bbs.cnblackhat.com/attachment 目录。
2.并且如果发现本机有文件更新,
也将其推送到192.168.1.103:/data/www/wwwroot/bbs.cnblackhat.com/attachment目录,实现双向同步.
3.SSH的22端口被修改成了3231.用户名root,密码:52netseek
4.现求用expect+rsync实现同步.
  1. #!/bin/bash
  2. ROOT="/data/www/wwwroot/bbs.cnblackhat.com/"
  3. SITE="192.168.1.103"
  4. USER="root"
  5. PASSWORD="52netseek"
  6. RSYNC_OPTS="-e \\\"ssh -p3231 -o StrictHostKeyChecking=no\\\" -azuv"

  7. auto_rsync() {
  8.    expect -c "eval spawn -noecho rsync --exclude .*.swp $RSYNC_OPTS $1 $2
  9.       match_max 10000k
  10.       expect \"*?assword:*\"
  11.       send -- \"$PASSWORD\r\"
  12.       expect eof"
  13. }

  14. sync() {
  15.    FILE=$(basename $1)
  16.    DEST=$(dirname $1)
  17.    # download remote site file to current location
  18.    auto_rsync $USER@$SITE:$ROOT$FILE $DEST
  19.    # update remote site file if newer than backup
  20.    auto_rsync $1 $USER@$SITE:$ROOT
  21. }

  22. # Remote file Directory
  23. sync "/data/www/wwwroot/bbs.cnblackhat.com/attachment"
复制代码





欢迎光临 黑帽联盟 (https://bbs.cnblackhat.com/) Powered by Discuz! X2.5