我的后端学习大纲
我的Linux环境搭建学习大纲
8.2.scp安全拷贝:
- 1.命令格式:
scp -r $pdir/$fname $user@$host:$pdir/$fname
- 2.具体命令:
scp -r jdk1.8.0_321/ root@Hadoop104:/opt/module
- 3.实际操作:
- 3.1.在
hadoop2和hadoop3,hadoop4
中都已经创建好了/opt/module
和/opt/software
目录: - 3.2.分发:
- 在102上向别人推送数据:
scp -r jdk1.8.0_321/ root@Hadoop104:/opt/module
- 或者拉取:在103上从102上拉取数据:
scp -r root@hadoop102:opt/module/jdk1.8 /opt/module/
。两个命令的角度正好相反 - 也可以在103上,把102上的数据拷贝到104上:
scp -r root@hadoop102:/opt/module/* root@hadoop:/opt/module/
- 在102上向别人推送数据:
- 3.1.在
- 在执行上述命令后发现报如下错误:
- 报错的原因是:是因为系统/etc/hosts中没有配置主机名,在三台机器上分别新加一下hosts中添加对应主机名与ip地址即可,如:
8.3.rsync远程同步工具:
- 1.
rsync
主要是用于备份和镜像,具有速度快,避免复制相同内容和支持符号链接的优点 - 2.
rsync
与scp
的比较:用rsync命令做文件的复制要比scp命令的速度快,rsyn只对差异文件做更新。scp是把所有的文件复制过去 - 命令:
8.4.集群分发脚本的编写:
- 1.希望脚本在任何路径下就都可以使用(脚本放在声明了全局环境变量的路径),这样就可以在任何目录下执行了
- 2.脚本实现:在
/root/bin
目录下创建xsync文件
#!/bin/bash
#1. 判断参数个数
if [ $# -lt 1 ]
thenecho Not Enough Arguement!exit;
fi#2. 遍历集群所有机器
for host in hadoop102 hadoop103 hadoop104
doecho ==================== $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:$pdirelseecho $file does not exists!fidone
done
- 更改脚本执行权限:
chmod 777 xsync
- 分发环境变量:
xsync /etc/profile.d/myenv.sh
- 重新103和104编译:
source /etc/profile
8.5.SSH免密登录配置
- 产生私钥和公钥命令:
ssh-keygen -t rsa
- 将102的公钥i拷贝给103和104:
ssh-copy-id Hadoop104
;ssh-copy-id Hadoop103