需求
- 需求:循环复制文件到所有节点的相同目录下
- 需求分析
①rsync命令原始拷贝:
rsync -av /opt/module root@hadoop103:/opt/
②期望脚本:
xsync要同步的文件名称
③说明:在/home/kunfire/bin这个目录下存放的脚本,kunfire用户可以在系统任何 地方直接执行。
- 脚本实现
①在用的家目录/home/kunfire下创建bin文件夹
②在/home/atguigu/bin目录下创建xsync文件,以便全局调用
[kunfire~]$mkdirbin[kunfire~]$cd/home/atguigu/bin[kunfire~]$vimxsync
脚本实现
#1. 判断参数个数if [ $#-lt1 ] thenecho Not Enough Arguement! exit; fi#2. 遍历集群所有机器for host in hadoop102 hadoop103 hadoop104 doecho====================$host====================#3. 遍历所有目录,挨个发送for file in$@do#4 判断文件是否存在if [ -e$file ] then#5. 获取父目录pdir=$(cd -P $(dirname $file); pwd)#6. 获取当前文件的名称fname=$(basename $file)ssh$host"mkdir -p $pdir" rsync -av$pdir/$fname$host:$pdirelseecho$file does not exists! fidonedone
修改脚本xsync具有执行权限
chmod+x xsync
测试脚本
xsync xsync