00:00
好,接下来呢,我们要完成一个集群分发脚本,你说在原来这个RSC基础上进行一个封装,那要实现一个什么功能,说循环复制文件到所有节点的相同目录下,那给大家演示一下啊。比如说现在呢,我们。在这个加目录下创建一个文件,比如说touch。a.TT。我们啊,希望写一个脚本,XXYNC这个名字啊,无所谓,用什么都行,然后a.TT。如果我一执行这个命令,那么这个a.T就会分发到。相同的路径,Home at,硅谷下面,我希望这里面也能给我产生一个a.T。是吧,哎,这样一个拷贝,那当然了,在104上我也希望。他加目录下也有一个a.T。就这么一个脚本,那么来看一下哈。怎么来实现?首先呢,哎,我们是围绕这个RSYC进行一个底层处理,比如说RSYC-AV对吧?嗯,OB BT model啊,S硅五,然后海德103OBD model,哎这个呢,是把原始数据同步分发到指定相同的路径上,这样去做。
01:16
那这个呢,有输入有输出,感觉我们要输入的参数好多啊,不合适,我们就希望呢是SSNC加上要同步的文件就能实现相关功能可以。对吧,好。那么继续往下看,说我们期望的脚本在任何路径上都能实现。比如说如果我们把这个RSYC这个。假如说我把这个SSYC这个脚本写完了。那写完了,我想让他在任何路径上都能使用。啥意思?还记得我们那个hi home吗?还有Java home吗?我是不在任何路径都能实现呢,怎么做到的?是我们配置了它全局的环境变量。
02:00
那全局环境变量一口。Dollar。看一下这个路径。那这里面有OPT OPT model。呃,还do房还有个JDK吧,这是JDK,除了这些之外,他还有一个什么路径呢。Home at古B。看到了吗?那也就是说,我们如果在home at b目录下把这个SNC放进去。那我后面再用这个SYNC的时候,是不是就可以在全局任何地方使用了。哎,道理是一样的哈,所以说这里面我们只是一个,呃,采用了省略的一种方式啊,当然你可以说我就在这个当前这个加目录下,我创建一个。SSY。NC对吧,这个命令,然后后面呢,哎,我想让这个路径。在全局任何啊,这个文件让全全局任何地方使用,那怎么办?你是不是得把当前这个路径配置到环境变量里面去啊。
03:00
对吧,哎,那这里面我就不配了啊,不配的话呢,就是呃,Make DB目录。进入到闭目录。那当前这个路径下创建一个脚本,是不是就能够在全局中使用?好,那这是第一个点。那往下走,下边呢,我们在这个路径下,Make DR r b啊,CDB,然后进来创建脚本,这个名字可以任意取。那下面呢,这个里面就是对应的这个脚本,这个脚本对大家的要求就是能够读懂就可以,不要求大家去独立去写哈。那那这脚本呢,大家看一下啊。拿过来。拿回来之后啊,我们改一下语言,这里面用下LL吧,诶看起来会舒服一些,那给大家解读一下,看看大家能不能看懂啊,据说大家这个下学的这个非常棒是吧?啊首先来看一下第一行井号叹号in bed没问题。那第一个功能模块。
04:01
判断这个参数。是否小于一?你看这里面是获取参数的个数。这个命令不知道大家是一个shell,还记不记得啊,然后呢,这是小于一。如果参数小于一,就说明你没有向这个脚本里面传递参数,那怎么办?哎,说这个没有参数直接退出。那继续往下走。说便利集群所有机器。我们一共有三台服务器。我们现在站在102上。对吧?啊,或者你在其他机也行,我希望在102103104都进行一次分发,那我这里面把三台主机的名称获取到。后循环的对吧,这是一对出现,那这个呢,分别把102复制给host 103复制给host 104复制给host。那进来第一行代码叫一口,相当于是打印后你传进来这个变量是谁?
05:00
那我们先处理的102,诶我就打印一下海德102,然后再处理103,再处理104。哎,一台主机,一台主机处理。让你告诉告诉这个用户,我在处理哪台主机。再往下。那下面for循环file,然后in Dollar at啥意思呢?你看啊,我们这里面我现在啊是说SSYNC我退出来吧。啊,这目录径啊,SSYNC,假如说这个命令是OK的,我传进一个a.T。那我可以,如果这个路径下还有一个b.tit我可以同步一次性都分发过去。啊,那这也就是这个脚本的一个功能强大之处。我可以便利你循环,便利你后面给的文件的一个个数多少个都行,我一个一个给你同步分发啊,那当然我们后面用的话,这个file呢,一般呢,我就传一个值。啊,这种情况是居多的哈,行,那继续往下找,读that这一对,那下面呢,这个是if判断,判断当前这个文件是否存在,比如说你传进来这个文件名称,它存不存在,那你看我现在这种情况。
06:08
我现在传进来一个A一个B,那A表示存在,那B是不是就不存在。对吧,哎,不存在,那不存在它会怎么样呢。往下看,如果说它存在,我们执行这个逻辑,如果不存在,说这个fair not this。哎,直接就结束了。好,那我们核心代码很显然是不是就这块儿。对吧,啊,那这块呢,给大家截出来。看一下这块他到底做了什么事。那这块呢,说哎,CD杠大P啊,然后什么Dollar DR name啊这个一堆,那我们呢,从里面往外看,先看这个DR name five,那它是什么含义呢。来看一下name。a.T。看一下那它是一个点,那我如果第嗯点的话。
07:01
那我能不能进入到这个点里面去呢?你看啊,这是执行它之后是不是CD啊,你先别管这个杠大P一会再来解释,那我cda点。啊,CD点嘛,对吧,你刚才不是点吗?进来之后,那后面是不是执行这个PWD啊,这不分号吗?第二条语句叫PWD。那是不是就获取到当前这个文件的附目录?对不对,哎,主要是找他。啊,那如果是他传的这个名字,那我这样传呢。嗯,叫。Home,爱的硅谷。a.T可以吧,啊,你看。是不是仍然也是获取到的home点五,也就是说无论你传这个文件,这个路径是相对路径还是说是绝对路径,我都能够获取你的副目录。那这个杠大P是什么含义呢?大家还记不记得那个软连接呀?啊软连接大家演示一下啊,如果说我make d。
08:02
A,这个目录,那我创建一个软连接,怎么创建了,还记得不?LN-S,然后传进来AA。对吧。看一下。我就给这个A创建了一个软连接,那么现在我执行一下,我说CD。滴滴。看好我当前进的路径是谁呀?是不home at硅谷BB啊,那它是不是一个软连接啊,只是一个符号,那我希望进到哪里呢?CD。杠大P,然后我还我退出来啊对,退到这,然后CD杠大P。BB。是不是进到的是这个A目录啊,对吧,啊A目录。那我们希望同步的是它这个根目录啊的内容,所以说这块呢,加了一个。CD杠大P,然后d r name,那我现在呢,就能获取到艾特硅谷啊,这个home艾硅谷这个路径,然后PWD得到你这个文件的目录。
09:07
那得到它之后,下面还有一个,我要想获取这个文件的名称base name file啥意思看一下啊。SE。那file就是a.T。就在这个路径啊,因为文件在这里面嘛。被子name,然后。a.D。能获取到没问题,那我在前面加上。Home at5。是不是也能获取到这个文件的名称啊,那现在呢,也就是说这个文件的名称和对应的它的路径我都能获取到,获取到之后它干嘛呢,说s sh Dollar。那这个Dollar后的是谁呀?还记得它是不是就是这个hi do102103104啊。那这个SSH命令是什么呢?诶,我们下节课会讲,但是这节课我先给你演示一下啊,比如说SSH hi doop 103。
10:05
看好了啊,我现在当前主机是不是102啊看。回车。说我要访问103,给个密码。六零。然后你看我现在在哪儿了。是不是就来到幺龙三了,你再查一下s name。是不是就OK,哎,我现在是在103上操作,我102在102主机,我去访问了103,那我能不能在103上创建一个文件名呢。看一下呗。看看能不能。Mac dr103。好,我创建完毕了,你说我现在在102上。操作幺龙三,在路径上创建了幺龙三,那是不是真的创建了?来到幺龙山上查看一下。是不是真有一个?哎,真有一个好,那行,那我们再来操作,我还在这儿,我再来执行一次。麦克电零三。
11:00
看看会发生什么情况。说文件已存在,无法重建,是这样吗?那你看我这里面我加一个小的杠P。放屁走。你看有没有报错,没有报错,那你说我们在同步这个文件的时候啊,有可能对方这个路径。存在也有可能不存在,那我不管你存在还是不存在,我先给你创建一个,哎,你要是我加一杠P之后,它都始终不会报错,哎,保证我目标地址这个路径上有这么一个。文件夹,那后续我再执行这个RSYNC杠、avpd pd不就它吗?附目录,然后file name是我获取的文件名称,然后同步到哪台主机。然后。文件夹路径。哎,这样一个过程哈,那个RSYC这块我相信大家之前在用过,就不再过多解释了。啊,所以说这个脚本啊,还是挺有点水平的哈,那么来快速的这个看一下吧,嗯。
12:02
啊,得退出啊,怎么返回退出呢?E sit退出,你看现在我就回到了。自己的102上了啊。这不交零二吗?啊,来这。行,那这里面我们进入到这个B目录。创建。VMXSYNC脚本,哎,那我把这个代码呢,直接就拿过来了哈。大家能看懂就行。那粘贴的时候啊,大家要注意一下哈,好多这个同学啊,尤其是刚学习的时候,你不转入到这个,摁一下I或者O进入插入模式,然后上来就直接粘,那上来直接粘会出现什么情况,他自己遇到I的时候才会往下增长,我给大家演示一下吧,啊演示一下U啊撤销对吧?哎,好多同学上来就这样。这战舰?然后说海哥,我这个脚本不能用。你看。我撤销一下啊。大家演示一下错误。
13:01
哦,不懂。我直接粘右键粘贴。粘贴完之后,你看会发生什么情况。看到了,哎,他截了一半啊,他遇到I之后,他会再往里面去粘贴啊,那这不是我们的本意啊,啊退回来,那我直接我们点一个I进来之后。粘贴。看一下。是吧,这样就OK了。保存退出,这是Linux的一个基本操作啊,那当前这个脚本能不能用呢?很显然它没有这个可执行的这种权限。举报的星期。SC,哎,你看立即颜色也发生了变化,那这个SSYC就能够使用了,那能够使用了,我们就用一下呗,这个脚本。SSYC,我就同步一下当前这个并目录,对吧,你看一下103有没有幺零市场说都没有啊执行。链接。
14:06
OK,那现在呢,我就要同步完了,同步完之后呢,我们来看一下英伦山上。是不是就有个闭目录对吧,那里面有没有是我们想要的脚本呢。是不是也有啊,OK,那我看一下英雄四。对吧,哎,这里面也有了,现在呢,我们就已经同步分发完毕了。那现在呢,我们是能够分发艾特硅谷账号下的一个内容,那我现在想分发一个什么呢?我想分发一下环境变量。比如说SYNC。ETC。Perfect。点D下面有一个麦V,我们环境变量也希望分发一下,能不能分发呢?好,资金完事了,那你看这里面报什么了。
15:02
说每次分发的时候说file的这个权限拒绝了,那看一看真正的能不能看得到啊。嗯,VETC。Pro。买,因为。你看我打一个麦NT包间根本就找不到啊,根本就没有,或者你这样查看也行。你看有吗?根本就没有对吧,那有同学说了,你这个海哥呀,你刚才这个同步分发的时候,前面没有加速度,那我们试一下,哎,我们加一个速度。看到了吗?说这个找不到,它不是系统命令,那为啥呢?你想想我一加了输度,相当于我是什么用户了,是root用户对不对,那我现在这个脚本在什么路径下,是不是在这个加目录啊,比如说home。
16:03
艾特硅谷,然后B目录下,在这个目录下。哎,那这个艾特这个root账号啊,它使用不了这个路径,那怎么办呢?哎,我可以这样啊速度。嗯,当前路径点二。BSSYC,你不是找不到这个命令吗?哎,我给你一个类似于这种绝对路径点field什么,因为走。好完事儿对吧,你看这里面同步的用户是不是都是root呀,艾root,那我当前脚本是不是相当于是在home艾特硅谷,然后我在执行的命令的时候,我是加上了点bin,在我当前路径下的点B,我直接能找到这个SMNC,然后再执行同步啊对吧?哎是这样操作,那看一看这样行不行。
17:08
嗯。直接吧,直接VM。速度。ETC。profile.dmy,你看现在就提出来了,而且加个home还home都已经OK了,那这个幺四啊也是一样的。我用这个名称也行啊,V ETC profile.d因为。是吧,哎,都是OK的哈,退出。行,那这样呢就OK了,那OK了,别忘了哈,在103和104上你都进行S一下,要不然你现在打这个Java是不是还是不生效啊,哎,那怎么办呢,SETC。OK。是不是就OK了啊,再来这儿扫一下。
18:00
搞定就轻松加愉快的把这个同步脚本啊就搞定了哈,那这个脚本呢,大家回去的时候啊,认真看一遍就可以了啊,后面呢,知道怎么用就行啊,不用这个太去这个钻研啊。
我来说两句