黑帽联盟

 找回密码
 会员注册
查看: 2033|回复: 0

[基础服务] expect+rsync实现双向同步

[复制链接]

906

主题

38

听众

3374

积分

管理员

Rank: 9Rank: 9Rank: 9

  • TA的每日心情
    慵懒
    昨天 00:19
  • 签到天数: 1695 天

    [LV.Master]伴坛终老

    一直在找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"
    复制代码
    您需要登录后才可以回帖 登录 | 会员注册

    发布主题 !fastreply! 收藏帖子 返回列表 搜索
    回顶部