第一次进行拷贝用scp命令,第二次用要更改用xsync命令。 scp
定义:实现服务器与服务器之间的数据拷贝。基本语法:命令 -递归 要拷贝的文件路径/名称 目的地用户@主机:目的地路径/名称;例如scp -r $pdir/$fname $user@$host:$pdir/$fname实例:
- 在hadoop102,hadoop103,hadoop104都创建好了/opt/module和/opt/software两个目录,将这两个目录修改为amelia:amelia;
命令sudo chown amelia:amelia -R /opt/module在hadoop102上,将hadoop102中/opt/module/jdk1.8.0_144目录拷贝到hadoop103上;
命令scp -r /opt/module/jdk1.8.0_144 amelia@hadoop103:/opt/module
需求:循环复制文件到所有节点的相同目录下。基本语法:rsync -av /opt/module amelia#hadoop103:/opt/;实现:
- 在hadoop102的/home/amelia/bin目录下创建xsync文件;
[amelia@hadoop102 ~]$ cd /home/amelia [amelia@hadoop102 ~]$ mkdir bin [amelia@hadoop102 ~]$ cd bin/ [amelia@hadoop102 ~]$ vim xsync
- 在文件中编写如下代码
#!/bin/bash #1.判断参数个数 if [ $# -lt 1 ] then echo Not Enough Arguement! exit; fi #2.遍历集群所有机器 for host in hadoop102 hadoop103 hadoop104 do echo ================= $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:$pdir else echo $file does not exists! fi done done
- 修改xsync权限,会发现修改之后的文件名变绿了
[amelia@hadoop102 ~]$ chmod 777 xsync
分发命令sudo ./bin/xsync 文件名



