- 第一次进行拷贝用
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
xsync
- 需求:循环复制文件到所有节点的相同目录下。
- 基本语法:
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
if [ $# -lt 1 ]
then
echo Not Enough Arguement!
exit;
fi
for host in hadoop102 hadoop103 hadoop104
do
echo ================= $host =================
for file in $@
do
if [ -e $file ]
then
pdir=$(cd -P $(dirname $file); pwd)
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