文件分发系统

文件分发系统

一个机器上的多个文件要同步到多台机器上,该如何处理?

需求:将192.168.221.10机器上的/aa/aa.txt、/bb/bb.txt、/cc/cc.txt、/dd/dd.txt同步到192.168.221.20,192.168.221.30这两台机器上

  • 在192.168.221.10机器上创建aa/aa.txt、/bb/bb.txt、/cc/cc.txt、/dd/dd.txt
mkdir {/aa/,/bb/,/cc/,/dd/}
echo "aa" > /aa/aa.txt;echo "bb" > /bb/bb.txt;echo "cc" > /cc/cc.txt;echo "dd" > /dd/dd.txt
  • 实现文件同步的脚本one-more-rsync.sh
vim /usr/local/sbin/expect/one-more-rsync.sh
#!/usr/bin/expect
set passwd "root"
set user "root"
set host [lindex $argv 0]
set file [lindex $argv 1]
spawn rsync -avR --files-from=$file / $user@$host:/
expect {
"yes/no" {send "yes\r";exp_continue}
"password:" {send "$passwd\r"}
}
expect eof

chmod +x /usr/local/sbin/expect/one-more-rsync.sh
  • 建立一个同步的文件列表(one-more-rsync.sh中变量file)
vim /tmp/publicfilelist.txt
/aa/aa.txt
/bb/bb.txt
/cc/cc.txt
/dd/dd.txt
  • 建立一个发送文件目标机器的ip列表
vim /tmp/desip.txt
192.168.221.20
192.168.221.30
  • 写一个运行的脚本run.sh,调用one-more-rsync.sh
vim /usr/local/sbin/expect/run.sh
#!/bin/bash
publicfilelist="/tmp/publicfilelist.txt"
for desip in `cat /tmp/desip.txt`; do
        ./one-more-rsync.sh $desip $publicfilelist   //注意参数的顺序
done
  • 执行run.sh
[root@localhost expect]# bash run.sh 
spawn rsync -avR --files-from=/tmp/publicfilelist.txt / root@192.168.221.20:/
root@192.168.221.20's password: 
building file list ... done
aa/
aa/aa.txt
bb/
bb/bb.txt
cc/
cc/cc.txt
dd/
dd/dd.txt

sent 328 bytes  received 100 bytes  856.00 bytes/sec
total size is 12  speedup is 0.03
spawn rsync -avR --files-from=/tmp/publicfilelist.txt / root@192.168.221.30:/
The authenticity of host '192.168.221.30 (192.168.221.30)' can't be established.
ECDSA key fingerprint is SHA256:UiIDDUfExrEZLxrI8+z6PWjWsNCO2GTDDfTKpEhQaWY.
ECDSA key fingerprint is MD5:4e:79:bd:c6:bb:8d:b7:ee:1a:a4:cb:25:03:22:10:5f.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.221.30' (ECDSA) to the list of known hosts.
root@192.168.221.30's password: 
building file list ... done
aa/
aa/aa.txt
bb/
bb/bb.txt
cc/
cc/cc.txt
dd/
dd/dd.txt

sent 328 bytes  received 100 bytes  285.33 bytes/sec
total size is 12  speedup is 0.03

总结:

  • 目标机器的用户名与密码都是一样的(192.168.221.20与192.168.221.30这两台机器的用户名与密码都是一样的)
  • rsync -R
  • bash脚本中调用了expect脚本(如 ./one-more-rsync.sh,最好用绝对路径,我这儿run.sh与one-more-rsync.sh在同一目录下)
  • 参数的对应关系

转载于:https://blog.51cto.com/13480443/2088161

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值