1. 配置ssh无密码登录
具体操作请看这里
如果ping
的通在进行操作
2. 安装rsync
- 使用
apt-get install rsync
或者使用yum install -y rsync
进行安装 - 安装完成后测试输入
rsync
不会出现命令找不到就行了。
3. 封装xsync命令
- 编写脚本
vim xysnc
,或者touch
创建完成在进行vim xsync
修改 - 增加如下内容
#!/bin/sh
# 获取输入参数个数,如果没有参数,直接退出
pcount=$#
if((pcount!=4)); then
echo Usage: $0 filename servername startno endno
exit;
fi
# 获取文件名称
p1=$1
fname=`basename $p1`
echo fname=$fname
# 获取上级目录到绝对路径
pdir=`cd -P $(dirname $p1); pwd`
echo pdir=$pdir
# 获取当前用户名称
user=`whoami`
# 获取hostname及起止号
slave=$2
startline=$3
endline=$4
# 循环
for((host=$startline; host<=$endline; host++)); do
echo $pdir/$fname $user@$slave$host:$pdir
echo ==================$slave$host==================
rsync -rvl $pdir/$fname $user@$slave$host:$pdir
done
- 修改文件权限
chmod 777 xsync
- 尝试执行
xsync 文件名 主机名称 主机起始编号 主机终止编号
比如你以root的身份,在/usr/local/hadoop文件夹下执行:
xsync test.txt node 1 10
就是把文件test.txt同步到 主机的node1, node2, node3 ...node10
的root用户的/usr/local/hadoop文件夹下。
- 放到环境变量中,方便使用。如果安装了hadoop可以放到hadoop的bin目录下,如果安装了java可以放在Jdk的bin目录下
4. 问题记录
-
这里说一下,为什么要生成公钥与私钥。
- 最主要的是公钥可以有多个主机持有,而私钥只有自己有,所以,别人没法破译别人发给我的信息。
- 还有就是公钥短,保密性差,私钥长,保密性强。
-
如果出现了
Permission Denied
,先看看密码输入的对不对,之后看vim /etc/ssh/sshd_config
文件中的PasswordAuthentication
是不是yes
,最后看PermitRootLogin
是不是yes
如果以上都不能登录的话,果断换一个静态Ip地址。别问我为什么,问就是一上午也ssh登录不成功。