[scq@hadoop001 /]$ scp -r /opt/module/* scq@hadoop002:/opt/module
(b)将 hadoop001 服务器上的/opt/module 目录下的软件拷贝到 hadoop003 上。
scq@hadoop003 opt]$ scp -r scq@hadoop101:/opt/module/* hadoop003:/opt/module
(c)在 hadoop003 上操作将 hadoop001 中/opt/module 目录下的软件拷贝到hadoop004 上。
[scq@hadoop003 opt]$ scp -r scq@hadoop001:/opt/module/* scq@hadoop004:/opt/modul
注意一点:
1.用户@主机名:地址,在该主机中,这个用户必须读地址有读权限
2.路径后面记得带*号
2)rsync 远程同步工具
主要用于备份和镜像。具有速度快、避免复制相同内容和支持符号链接的优点。
rsync 和 scp 区别: 用 rsync 做文件的复制要比 scp 的速度快, rsync 只对差异文件做更新。 scp 是把所有文件都复制过去。
(1)查看 rsync 使用说明
man rsync | more
(2)基本语法
rsync -rvl $pdir/$fname $user@hadoop$host:$pdir
命令 命令参数 要拷贝的文件路径/名称 目的用户@主机:目的路径
(3) 选项说明
选项 功能
-r 递归
-v 显示复制过程
-l 拷贝符号连接
(4)案例实操
把本机/opt/software 目录同步到 hadoop002 服务器的 root 用户下的/opt/目录
[scq@hadoop001 opt]$ rsync -rvl /opt/software/* hadoop102:/opt/software/
3)rsync 远程同步工具
脚本需求分析:循环复制文件到所有节点的相同目录下。
(1)原始拷贝:
rsync -rvl /opt/module root@hadoop103:/opt/
(2)期望脚本:
xsync 要同步的文件名称
(3)在/home/atguigu/bin 这个目录下存放的脚本, atguigu 用户可以在系统任何地方直接执行。
#!/bin/bash#1 获取输入参数个数,如果没有参数,直接退出pcount=$#if((pcount==0)); then echo no args;exit;fi#2 获取文件名称p1=$1fname=`basename $p1`echo fname=$fname#3 获取上级目录到绝对路径pdir=`cd -P $(dirname $p1); pwd`echo pdir=$pdir#4 获取当前用户名称user=`whoami`#5 循环for((host=2; host<4; host++)); doecho --------------------- hadoop00$host ----------------rsync -rvl $pdir/$fname $user@hadoop00$host:$pdirdone
注1 对于dirname,记住一下几个场景
输入:dirname // 结果为 /(斜杠)。
输入:dirname /a/b/ 结果为:/a。输入:dirname a 结果为 . (点)。
输入:dirname a/b 结果为路径名 a
.即当前目录,所以脚本中的代码我们使用绝对路径和相对路径都是可行的