编写集群分发脚本rsync-script
rsync 远程同步工具
rsync主要用于备份和镜像。具有速度快、避免复制相同内容和支持符号链接的优点。
rsync和scp区别:用rsync做文件的复制要比scp的速度快,rsync只对差异文件做更新。scp是把所有文
件都复制过去。
1 基本语法
rsync -rvl $pdir/$fname $user@$host:$pdir/$fname
命令 选项参数 要拷贝的文件路径/名称 目的用户@主机:目的路径/名称
2选项参数说明
选项 | 功能 |
---|---|
-r | 递归 |
-v | 显示复制过程 |
-l | 拷贝符号连接 |
rsync案例
1 三台虚拟机安装rsync (执行安装需要保证机器联网)
[root@linux121 ~]# yum install -y rsync
2.把linux121机器上的/opt/bigdata/software目录同步到linux122服务器的root用户下的/opt/目录
[root@linux121 opt]$ rsync -rvl /opt/bigdata/software/
root@linux122:/opt/bigdata/software
集群脚本编写
在/usr/local/bin这个目录下存放的脚本,root用户可以在系统任何地方直接执行。
[root@linux121 ]$ cd /usr/local/bin
[root@linux121 bin]$ touch rsync-script
[root@linux121 bin]$ vim rsync-script
在文件中编写shell代码
#!/bin/bash
#1 获取命令输入参数的个数,如果个数为0,直接退出命令
paramnum=$#
if((paramnum==0)); then
echo no params;
exit;
fi
#2 根据传入参数获取文件名称
p1=$1
file_name=`basename $p1`
echo fname=$file_name
#3 获取输入参数的绝对路径
pdir=`cd -P $(dirname $p1); pwd`
echo pdir=$pdir
#4 获取用户名称
user=`whoami`
#5 循环执行rsync
for((host=121; host<124; host++)); do
echo ------------------- linux$host --------------
rsync -rvl $pdir/$file_name $user@linux$host:$pdir
done
修改脚本 rsync-script 具有执行权限
[root@linux121 bin]$ chmod 777 rsync-script
调用脚本形式:rsync-script 文件名称
[root@linux121 bin]$ rsync-script /home/root/bin
调用脚本分发Hadoop安装目录到其它节点
[root@linux121 bin]$ rsync-script /usr/local/bin