配置xsync 和写xsync配置文件的两种方法!!怎么设置免密?…… Linux虚拟机scp命令、rsync命令与xsync命令的使用和具体实现

目录

目录

一、配置免密

(一)修改hosts文件

(二)设置免密

(1)test01的免密

(2)test02的免密

​编辑

(2)test03的免密

二、拷贝文件命令

(一)scp(secure copy)安全拷贝 命令

1.scp定义:

2.基本语法:

3.案例实操:

(二)rsync远程同步工具 命令

1.rsync定义:

rsync和scp的区别

1)用rsync做文件的复制要比scp的速度快,rsync只对差异文件做更新。

2)scp是把所有文件都复制过去

2.基本语法:

3.选项参数说明:

4.案列实操:

​编辑

(三)xsync集群分发脚本命令

1.需求:

2.需求分析:

3.脚本实现

4.测试脚本

5.区分/bin /usr/bin



一、配置免密

想要实现上述的命令,首先必须要配置免密,这里我想要实现三台虚拟机互相传输文件,所以这里要实现互相免密

(一)修改hosts文件

vi /etc/hosts

848e7c73c2c547de99bed594cc4d6535.png

输入3台虚拟机的ip地址在hosts文件里面

fbb553ca45e94307929e96badd6dc472.png

用scp拷贝到test02、test03虚拟机

 scp /etc/hosts root@test02:/etc/hosts
 scp /etc/hosts root@test03:/etc/hosts

c44c9f9deccc4f48b2ceca2c6e21e0c7.png

在test02、test03进行验证

cat /etc/hosts

d0ede52ac7ad4341a89d0edeb4810f3c.png

327b89154271424283e006d83491f299.png

(二)设置免密

(1)test01的免密

  • ssh-keygen-t rsa生成密钥
ssh-keygen -t rsa

f86383ed4e3a4289af1d5b51353510b1.png

拷贝密钥到test02

 ssh-copy-id root@test02

95ee45085bc742cf80dc4897951c230e.png

拷贝密钥到test03

 ssh-copy-id root@test03

e0e0ac07f3d14239bb30cb48214c0a50.png

 拷贝密钥到test01

 ssh-copy-id root@test01

2ff502b6ebe14e6bb84417ef232d2c1f.png

  • 测试免密

 ssh test02
 ssh test03
 ssh test01

879574640d314b9c8a46ca114e84709c.png

切换成功!

  • 退出登录
exit

acfa1bcece59493cbc10028ce7edee33.png

(2)test02的免密

生成密钥

 ssh-keygen -t rsa

02e4400de41a445eb2a0381e2444fe15.png

拷贝密钥到test03

 ssh-copy-id root@test03

9feb1a44ff1147c8b1fad951811fc06d.png

拷贝到test01

 ssh-copy-id root@test01

3d8e35c0c1204d319c3d960b2b28f586.png

 拷贝到test02

 ssh-copy-id root@test02

187605afd2ed4427baa77053403fad62.png

  • 测试免密

fcbc09e262bd449986632197e9b14b8c.png

(2)test03的免密

 生成密钥

 ssh-keygen -t rsa


c6ea2c4a18ae48adbbe31faeb14fd87d.png

 拷贝密钥到test01

 ssh-copy-id root@test01

4fe68a868f87452abfbb0ede360712e6.png

 拷贝密钥到test02

 ssh-copy-id root@test02

 de2e2996fd744d0892f835f34bdb6c94.png

拷贝密钥到test03

 ssh-copy-id root@test03

35fa5fb24bfa4b1a97c541d9b20e9a26.png

  •  测试免密

 ssh test01
 ssh test02
 ssh test03

3f613076ba814b71ba8a6a8e21bd9d38.png

这里显示无论从哪一台虚拟机(test01、test02、test03)都可以进入 证明我们的免密是成功了的!

二、拷贝文件命令

(一)scp(secure copy)安全拷贝 命令

1.scp定义:

scp可以实现服务器与服务器之间的数据拷贝(from server1 to server2)

2.基本语法

scp    -r          $pdir/$fname              $user@hadoop$host:$pdir/$fname
命令   递归     要拷贝的文件路径/名称    		目的用户@主机:目的路径/名称

3.案例实操:

a.在hadoop01上,将hadoop01中/opt/module目录下的软件拷贝到hadoop02上:

scp -r modules/ root@hadoop02:/opt/modules/

daee965610914d298bc9abaafbe85394.png

b.在hadoop01上,将hadoop01中/etc/hosts文件拷贝到test01上:

scp /etc/hosts root@test01:/etc/hosts

22d0076c6df24ed2b2e4d7989c0d38a7.png这个命令的问题就是如果很多文件,存在传输很慢的情况(而且不能暂停)

(二)rsync远程同步工具 命令

1.rsync定义:

rsync主要用于备份和镜像。具有速度快、避免复制相同内容和支持符号链接的优点。

rsync和scp的区别

  • 1)用rsync做文件的复制要比scp的速度快,rsync只对差异文件做更新。

  • 2)scp是把所有文件都复制过去

2.基本语法:

rsync    -av       $pdir/$fname              $user@hadoop$host:$pdir/$fname
命令   选项参数   要拷贝的文件路径/名称    目的用户@主机:目的路径/名称

3.选项参数说明:

选项

功能

-a

归档拷贝

-v

显示复制过程

4.案列实操:

  • 把test02机器上的/opt/softwares目录同步到test03服务器的root用户下的/opt/softwares
  • 用下方的底栏 选择全部命令 输入安装命令
# 需要系统安装有rsync:
yum install -y rsync

2860198b969e45f98a32b52795d2a833.png

rsync -av /opt/softwares/ root@test03:/opt/softwares

ee53eb8b431a41e8b6a6b8f2819230c0.png

  • 去test03中看softwares这个目录 成功~!!!

080ec0c5a86445cea38db63ed2955c00.png

(三)xsync集群分发脚本命令

1.需求:

  • 循环复制文件到所有节点的相同目录下

2.需求分析:

a)rsync命令原始拷贝:

rsync -av /opt/modules  root@hadoop02:/opt/

b)期望脚本:

xsync 要同步的文件名称

c)说明:在/home/local/bin这个目录下存放的脚本,local用户可以在系统任何地方直接执行。

3.脚本实现

(1)在bin文件目录下创建xsync.sh脚本文件(让系统识别到,才能使用)(.sh是一个标识)

cd /bin
vi xsync.sh

d75d75635bbd46609363c75637a05b29.png

(2)编写脚本文件

  • 用于三台虚拟机ip地址相差不大的
#文件加入以下内容:
#!/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=7; host<=9;host++))
do
        echo ------------------- @192.168.58.$host --------------
        rsync -rvl $pdir/$fname $user@192.168.58.$host:$pdir/
done
  • 这个用于相差很大的虚拟机ip地址(就用名称好了) 
#!/bin/bash
#1 获取输入参数个数,如果没有参数,直接退出
pcount=$#
if [ $pcount -lt 1 ]
then
    echo Not Enough Arguement!
    exit;
fi

#2. 遍历集群所有机器
# 也可以采用:
# for host in hadoop{01..03};
for host in hadoop01 hadoop02 hadoop03
do
    echo ====================    $host    ====================
    #3. 遍历所有目录,挨个发送
    for file in $@
    do
        #4 判断文件是否存在
        if [ -e $file ]
        then
            #5. 获取父目录
            pdir=$(cd -P $(dirname $file); pwd)
            echo pdir=$pdir
            
            #6. 获取当前文件的名称
            fname=$(basename $file)
            echo fname=$fname
            
            #7. 通过ssh执行命令:在$host主机上递归创建文件夹(如果存在该文件夹)
            ssh $host "mkdir -p $pdir"
            
			#8. 远程同步文件至$host主机的$USER用户的$pdir文件夹下
            rsync -av $pdir/$fname $USER@$host:$pdir
        else
            echo $file does not exists!
        fi
    done
done

c0e1757203e04bbc9f62ca0be79dc394.png

(3)保存退出

  • 检查三台虚拟机是否下载rsync(统一输入rsync查看是否有版本号)

0abe5873eba447988e4c4c892f6d814e.png

4.测试脚本

(1)在根目录下 (home),创建shell文件测试

b31e0e8f239546dc968fef6c62fcff06.png

(2)尝试一键传送

xsync shell

9c59f4d13b9548cf993e7d9b3e5c0b7f.png

这里是什么问题呢?

5.区分/bin /usr/bin

小编把文件放于/bin文件目录下的,这里的文件有什么特征呢?

(1)从命令功能角度:

  • /bin下存放一些普通的基本命令,如ls,chmod等,这些命令在Linux系统里的配置文件脚本里经常用到

(2)从用户权限的角度:

  • /bin下的命令管理员和一般的用户都可以使用

(3)分别的作用:

  • /bin是系统的一些指令。主要放置一些系统必备执行档,例如 cat、cp、chmod df、dmesg、gzip、kill、ls、mkdir、more、mount、rm、su、tar等。

  • /usr/bin 是你在后期安装的一些软件的运行脚本。主要放置一些应用软体工具必备执行档,例如 c++、g++、gcc、chdrv、diff、dig、du、eject、elm、free、gnome*、 gzip、htpasswd、kfm、ktop、last、less、locale、m4、make、man、mcopy、ncftp、 newaliases、nslookup passwd、quota、smb*、wget等

  • usr/local/bin:跟/usr/nbin差不多,放用户自己的可执行文件,但是可以在任何目录下执行

这里我们是xsync软件的脚本,应该放在/usr/local/bin下面才可以!

更改脚本文件的位置

mv xsync.sh  /usr/local/bin

37d32ac78dd049f7ba48ba3a893c8f93.png

给脚本可执行权限

 chmod 755 xsync.sh 

debcf9c59b5b4756a225e3f96e4ccc2d.png

在输入命令

xsync shell

9381f9eb1ce14bcaa33d97f245051448.png

尝试不要后缀名

 mv xsync.sh xsync

afd356fb395840f0b57e918ddf8aff25.png

再次输入命令 xsync shell

xsync shell

21e208c94c504a1595422851a1202e01.png

分别去test02 test03看看有没有shell目录

2feafd35981841edba03fa704769571e.png

目录

一、配置免密

(一)修改hosts文件

(二)设置免密

(1)test01的免密

(2)test02的免密

​编辑

(2)test03的免密

二、拷贝文件命令

(一)scp(secure copy)安全拷贝 命令

1.scp定义:

2.基本语法:

3.案例实操:

(二)rsync远程同步工具 命令

1.rsync定义:

rsync和scp的区别

1)用rsync做文件的复制要比scp的速度快,rsync只对差异文件做更新。

2)scp是把所有文件都复制过去

2.基本语法:

3.选项参数说明:

4.案列实操:

​编辑

(三)xsync集群分发脚本命令

1.需求:

2.需求分析:

3.脚本实现

4.测试脚本

5.区分/bin /usr/bin


这样就轻轻松松的传输成功咯!!!~~

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值