(1) 基本语法:
cp -r source destination
命令 递归 要拷贝的文件路径/名称 目的路径/名称
(2) 例子:
#将/abc目录下所有文件 复制到/def下
cp -r /abc /def
(1)scp定义:
scp可以实现服务器与服务器之间的数据拷贝。(from server1 to server2)
(2)基本语法
scp -r source destination
命令 递归 要拷贝的文件路径/名称 目的用户@主机:目的路径/名称
(3)例子
#1.在hadoop131上,将hadoop131中/opt/module目录下的软件拷贝到hadoop132上。
scp -r hadoop131:/opt/module/hadoop-2.7.2 hadoop132:/opt/module
#2.在hadoop131上,将hadoop131中/etc/profile目录下的软件拷贝到hadoop132上。
scp -r hadoop131:/etc/profile hadoop132:/opt/module
(4)tips
(a)远程把Hadoop131上的/opt/module拷贝到Hadoop132相同的位置
(b)只复制文件内容,不复制时间戳
(c)命令执行拷贝位置不受限制,hadoop131,hadoop132两台机器都可以
rsync主要用于备份和镜像。具有速度快、避免复制相同内容和支持符号链接的优点。
rsync和scp区别:用rsync做文件的复制要比scp的速度快,rsync只对差异文件做更新。scp是把所有文件都复制过去。
(1)基本语法
rsync -rvl source destination
命令 选项参数 要拷贝的文件路径/名称 目的用户@主机:目的路径/名称
选项参数说明
选项 |
功能 |
-r |
递归 |
-v |
显示复制过程 |
-l |
拷贝符号连接 |
(2)例子
#在hadoop132(需要拷贝的机器上执行命令),将hadoop131:/opt/module/jdk1.8.0_144拷贝到
#hadoop132:/opt/module下
rsync -rvl hadoop131:/opt/module/jdk1.8.0_144 /opt/module
rsync -rvl hadoop131:/etc/profile /etc/profile
(3)tips
//归档拷贝,完全拷贝
//只能在要拷贝的机器上执行命令
4)写个分发脚本(xsync)
#!/bin/bash
#1 获取输入参数个数,如果没有参数,直接退出
pcount=$#
if((pcount==0));
then
echo no args;
exit;
fi
#2 获取文件名称
p1=$1
fname=`basename $p1`
echo fname=$fname
#3 获取上级目录到绝对路径
pdir=`cd -P $(dirname $p1); pwd`
echo pdir=$pdir
#4 获取当前用户名称
user=`whoami`
#5 循环所有机器
for((host=132; host<135; host++));
do
echo ------------------- hadoop$host --------------
rsync -rvl $pdir/$fname $user@hadoop$host:$pdir
done
tips:
$# 是传给脚本的参数个数
$0 是脚本本身的名字
$1 是传递给该shell脚本的第一个参数
$2 是传递给该shell脚本的第二个参数
$@ 是传给脚本的所有参数的列表
$* 是以一个单字符串显示所有向脚本传递的参数,与位置变量不同,参数可超过9个
$$ 是脚本运行的当前进程ID号
$? 是显示最后命令的退出状态,0表示没有错误,其他表示有错误
(1)使用脚本分发java、hadoop、/etc/profile(配置环境变量,该文件需切换到root用户执行)
遇到问题:
a. Permission denied, please try again.如何解决?
解决方法:
1)确认密码是否正确
2)分发的路径没有这个文件夹 ,找不到相应路径
3)普通用户ssh免密登陆(后续文章详细写!!!)
4)切换到root用户执行命令,输入root用户密码!!!
b.Linux中 /etc/profile 环境变量配置错误导致 vi,yum,ll等命令无法使用,失效,如何解决?
解决方法:
1)在命令行中输入:export PATH=/usr/bin:/usr/sbin:/bin:/sbin:/usr/X11R6/bin
2) vi /etc/profile 将配置的环境变量删除或者注释掉
3)source /etc/profile 使配置文件生效
(2)source /etc/profile 使配置文件生效
详见下一篇文章:Hadoop_05_完全分布式运行模式(集群配置)