一、VMware、Linux虚拟机环境准备
1、网络配置
1.1 查看网络IP和网关
1.1.1 查看虚拟网络编辑器
1.1.2 修改ip地址
1.1.3 查看网关
1.1.4 查看windows环境的中VMnet8网络配置(控制面板-网络和Internet-更改适配器选项)
1.2 配置Linux系统的网络IP和网关
1.2.1 查看当前网络IP
[wyr@hadoop101 ~]$ ifconfig
eth0 Link encap:Ethernet HWaddr 00:0C:29:7D:B7:BC
inet addr:192.168.1.101 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe7d:b7bc/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:3066 errors:0 dropped:0 overruns:0 frame:0
TX packets:1172 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:240100 (234.4 KiB) TX bytes:133232 (130.1 KiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:123 errors:0 dropped:0 overruns:0 frame:0
TX packets:123 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:18048 (17.6 KiB) TX bytes:18048 (17.6 KiB)
[wyr@hadoop101 ~]$
1.2.2 修改当前Linux系统的IP地址为固定地址
[wyr@hadoop101 ~]$ vim /etc/sysconfig/network-scripts/ifcfg-eth0
以下标红的项必须修改,有值的按照下面的值修改,没有该项的要增加。
DEVICE=eth0
HWADDR=00:0c:29:7d:b7:bc
TYPE=Ethernet
UUID=d902e817-ae32-4272-bc86-66ebca38f2b6
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=192.168.1.101
GATEWAY=192.168.1.2
DNS1=114.114.114.114
DNS2=8.8.8.8
1.2.3 重启network
执行
service network restart
如果报错,reboot,重启虚拟机
2、配置主机名
2.1 查看当前Linux系统的主机名称
[wyr@hadoop101 ~]$ hostname
hadoop101
[wyr@hadoop101 ~]$
2.2 修改当前Linux系统的主机名称
如果感觉此主机名不合适,我们可以进行修改。通过编辑/etc/sysconfig/network文件,修改HOSTNAME。
注意:主机名称不要有“_”下划线
[wyr@hadoop101 ~]$ vim /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=hadoop101
NTPSERVERARGS=iburst
3、关闭防火墙
3.1 临时关闭防火墙
[wyr@hadoop101 ~]$ sudo service iptables stop
3.1 关闭iptables服务的自动启动:开机启动时关闭防火墙
[wyr@hadoop101 ~]$ sudo chkconfig iptables off
4、添加新用户并配置新用户具备root权限
4.1 添加新用户
[root@hadoop101 ~]# useradd wyr
[wyr@hadoop101 ~]$ ll /home/
total 4
drwx------. 27 wyr wyr 4096 Jan 26 17:05 wyr
[wyr@hadoop101 ~]$
4.2 设置用户密码
[root@hadoop101 ~]# passwd wyr
4.3 赋予普通用户具有root权限
修改配置文件
[root@hadoop101 ~]# vi /etc/sudoers
修改 /etc/sudoers 文件,找到下面一行(91行),在root下面添加一行,如下所示:
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
wyr ALL=(ALL) ALL
或者配置成采用sudo命令时,不需要输入密码
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
wyr ALL=(ALL) NOPASSWD:ALL
修改完毕,现在可以用wyr帐号登录,然后用命令 sudo ,即可获得root权限进行操作。
二、多台Linux集群环境准备
1、在VMware中克隆3台Linux
1.1 修改各个Linux虚拟机主机名
第一台虚拟机:
[wyr@hadoop101 ~]$ vim /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=hadoop101
NTPSERVERARGS=iburst
第二台虚拟机:
[wyr@hadoop102 ~]$ vim /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=hadoop102
NTPSERVERARGS=iburst
第三台虚拟机:
[wyr@hadoop103 ~]$ vim /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=hadoop103
NTPSERVERARGS=iburst
1.2 修改各个Linux虚拟机网卡名称
第一台虚拟机:
[wyr@hadoop101 ~]$ vim /etc/udev/rules.d/70-persistent-net.rules
# This file was automatically generated by the /lib/udev/write_net_rules
# program, run by the persistent-net-generator.rules rules file.
#
# You can modify it, as long as you keep each rule on a single
# line, and change only the value of the NAME= key.
# PCI device 0x8086:0x100f (e1000)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{
address}=="00:0c:29:7d:b7:bc", ATTR{
type}=="1", KERNEL=="eth*", NAME="eth0"
第二台虚拟机:
[wyr@hadoop102 ~]$ vim /etc/udev/rules.d/70-persistent-net.rules
# This file was automatically generated by the /lib/udev/write_net_rules
# program, run by the persistent-net-generator.rules rules file.
# You can modify it, as long as you keep each rule on a single
# line, and change only the value of the NAME= key.
# PCI device 0x8086:0x100f (e1000)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{
address}=="00:0c:29:65:d4:7f", ATTR{
type}=="1", KERNEL=="eth*", NAME="eth0"
第二台虚拟机:
[wyr@hadoop102 ~]$ vim /etc/udev/rules.d/70-persistent-net.rules
# This file was automatically generated by the /lib/udev/write_net_rules
# program, run by the persistent-net-generator.rules rules file.
# You can modify it, as long as you keep each rule on a single
# line, and change only the value of the NAME= key.
# PCI device 0x8086:0x100f (e1000)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{
address}=="00:0c:29:65:d4:7f", ATTR{
type}=="1", KERNEL=="eth*", NAME="eth0"
第三台虚拟机:
[wyr@hadoop103 ~]$ vim /etc/udev/rules.d/70-persistent-net.rules
# This file was automatically generated by the /lib/udev/write_net_rules
# program, run by the persistent-net-generator.rules rules file.
# You can modify it, as long as you keep each rule on a single
# line, and change only the value of the NAME= key.
# PCI device 0x8086:0x100f (e1000)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{
address}=="00:0c:29:29:9b:63", ATTR{
type}=="1", KERNEL=="eth*", NAME="eth0"
1.3 修改各个Linux虚拟机网络配置
根据网卡中的信息修改:HWADDR修改为各个Linux自己的HWADDR值
第一台虚拟机:
[wyr@hadoop101 ~]$ vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
HWADDR=00:0c:29:7d:b7:bc
TYPE=Ethernet
UUID=d902e817-ae32-4272-bc86-66ebca38f2b6
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=192.168.1.101
GATEWAY=192.168.1.2
DNS1=114.114.114.114
DNS2=8.8.8.8
第二台虚拟机:
[wyr@hadoop102 ~]$ vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
HWADDR=00:0c:29:65:d4:7f
TYPE=Ethernet
UUID=d902e817-ae32-4272-bc86-66ebca38f2b6
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=192.168.1.102
GATEWAY=192.168.1.2
DNS1=114.114.114.114
DNS2=8.8.8.8
第三台虚拟机:
[wyr@hadoop103 ~]$ vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
HWADDR=00:0c:29:29:9b:63
TYPE=Ethernet
UUID=d902e817-ae32-4272-bc86-66ebca38f2b6
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=192.168.1.103
GATEWAY=192.168.1.2
DNS1=114.114.114.114
DNS2=8.8.8.8
1.4 添加各个Linux虚拟机的节点映射
[wyr@hadoop101 ~]$ sudo vim /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.101 hadoop101
192.168.1.102 hadoop102
192.168.1.103 hadoop103
2、各个Linux节点间ssh免密通信
如果A机器的a用户,希望使用b用户的身份,免密登录到B机器!实现步骤:
① A机器的a用户,在A机器上生成一对密钥
ssh-keygen -t rsa
② 密钥分为公钥和私钥,a用户需要将公钥拷贝到B机器上b用户的家目录下的authorithxxxx_keys
方法①:使用b用户登录到B机器,编辑authorithxxxx_keys,将公钥的内容进行添加
方法②:在A机器,使用a用户执行以下命令: ssh-copy-id b@B
③A机器的a用户,可以使用 ssh b@B进行登录!
注意:如果在配置时,省略了用户名,那么默认使用当前操作的用户名作为目标机器的用户名!
[a@A] ssh B 等价于 [a@A] ssh a@B
两种ssh的使用方式
①登录到目标主机,再执行命令
[a@A] ssh B
[a@B] jps
属于Login-shell,默认读取/etc/profile文件!
②在A机器,执行命令
[a@A] ssh B jps
属于non-Login-shell,不会读取/etc/profile文件!
只会读取 ~/.bashrc
解决: 在a@B的~/.bashrc中配置 source /etc/profile
注意:当前主机也要配置自己到自己的SSH免密登录!
配置SSH的作用 :
①执行scp,rsync命令时,不需要输入密码,方便
②在执行start-all.sh群起脚本时,需要输入密码
以第二台Linux虚拟机hadoop102为主要操作平台,在第二台Linux虚拟机hadoop102上创建一对密钥,默认保存在/home/wyr/.ssh
[wyr@hadoop102 ~]$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/wyr/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/wyr/.ssh/id_rsa.
Your public key has been saved in /home/wyr/.ssh/id_rsa.pub.
The key fingerprint is:
bc:de:d1:40:6d:6f:a3:63:2d:0d:8b:67:e7:ba:04:6a wyr@hadoop101
The key's randomart image is:
+--[ RSA 2048]----+
| |
| . |
| . o |
| . . . . |
| S o . + |
| o = B . |
| E o @ + |
| o . * = |
| . . oo. |
+-----------------+
[wyr@hadoop101 ~]$
[wyr@hadoop102 ~]$ ll -la
total 164
drwx------. 27 wyr wyr 4096 Jan 26 15:57 .
drwxr-xr-x. 3 root root 4096 Jan 26 11:03 ..
drwxrwxr-x. 2 wyr wyr 4096 Jan 26 11:17 .abrt
-rw-------. 1 wyr wyr 1952 Jan 26 15:11 .bash_history
-rw-r--r--. 1 wyr wyr 18 May 11 2016 .bash_logout
-rw-r--r--. 1 wyr wyr 176 May 11 2016 .bash_profile
-rw-r--r--. 1 wyr wyr 124 May 11 2016 .bashrc
drwxr-xr-x. 3 wyr wyr 4096 Jan 26 11:52 .cache
drwxr-xr-x. 5 wyr wyr 4096 Jan 26 11:17 .config
drwx------. 3 wyr wyr 4096 Jan 26 11:17 .dbus
drwxr-xr-x. 2 wyr wyr 4096 Jan 26 11:17 Desktop
drwxr-xr-x. 2 wyr wyr 4096 Jan 26 12:00 Documents
drwxr-xr-x. 2 wyr wyr 4096 Jan 26 11:17 Downloads
-rw-------. 1 wyr wyr 16 Jan 26 11:17 .esd_auth
drwx------. 4 wyr wyr 4096 Jan 26 14:41 .gconf
drwx------. 2 wyr wyr 4096 Jan 26 14:57 .gconfd
drwxr-xr-x. 6 wyr wyr 4096 Jan 26 11:52 .gnome2
drwx------. 2 wyr wyr 4096 Jan 26 11:52 .gnome2_private
drwxrwxr-x. 3 wyr wyr 4096 Jan 26 11:17 .gnote
drwx------. 2 wyr wyr 4096 Jan 26 14:41 .gnupg
-rw-rw-r--. 1 wyr wyr 127 Jan 26 14:41 .gtk-bookmarks
drwx------. 2 wyr wyr 4096 Jan 26 11:17 .gvfs
-rw-------. 1 wyr wyr 930 Jan 26 14:41 .ICEauthority
-rw-r--r--. 1 wyr wyr 631 Jan 26 14:41 .imsettings.log
drwxr-xr-x. 3 wyr wyr 4096 Jan 26 11:17 .local
drwxr-xr-x. 5 wyr wyr 4096 Jan 26 11:52 .mozilla
drwxr-xr-x. 2 wyr wyr 4096 Jan 26 11:17 Music
drwxr-xr-x. 2 wyr wyr 4096 Jan 26 11:17 .nautilus
drwxrwxr-x. 2 wyr wyr 4096 Jan 26 11:55 .oracle_jre_usage
drwxr-xr-x. 2 wyr wyr 4096 Jan 26 11:17 Pictures
drwxr-xr-x. 2 wyr wyr 4096 Jan 26 11:17 Public
drwx------. 2 wyr wyr 4096 Jan 26 11:17 .pulse
-rw-------. 1 wyr wyr 256 Jan 26 11:17 .pulse-cookie
drwx------. 2 wyr wyr 4096 Jan 26 16:24 .ssh
drwxr-xr-x. 2 wyr wyr 4096 Jan 26 11:17 Templates
drwxr-xr-x. 2 wyr wyr 4096 Jan 26 11:17 Videos
-rw-------. 1 wyr wyr 990 Jan 26 14:59 .viminfo
-rw-------. 1 wyr wyr 110 Jan 26 15:57 .Xauthority
-rw-------. 1 wyr wyr 3096 Jan 26 14:57 .xsession-errors
-rw-------. 1 wyr wyr 4407 Jan 26 12:27 .xsession-errors.old
[wyr@hadoop102 ~]$ cd .ssh
[wyr@hadoop102 .ssh]$ ls
id_rsa id_rsa.pub known_hosts
将生成的id_rsa.pub分别发送到hadoop101 、hadoop102 、hadoop103 三台Linux虚拟机上
[wyr@hadoop102 .ssh]$ ssh-copy-id wyr@hadoop101
wyr@hadoop101's password:
Now try logging into the machine, with "ssh 'wyr@hadoop101'", and check in:
.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.
[wyr@hadoop102 ~]$ ssh hadoop101
Last login: Tue Jan 26 16:54:29 2021 from 192.168.1.10
[wyr@hadoop101 ~]$ exit
logout
Connection to hadoop101 closed.
[wyr@hadoop102 ~]$
[wyr@hadoop102 .ssh]$ ssh-copy-id wyr@hadoop102
wyr@hadoop102's password:
Now try logging into the machine, with "ssh 'wyr@hadoop102'", and check in:
.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.
[wyr@hadoop102 ~]$ ssh hadoop102
Last login: Tue Jan 26 17:58:27 2021 from 192.168.1.10
[wyr@hadoop102 ~]$ exit
logout
Connection to hadoop102 closed.
[wyr@hadoop102 ~]$
[wyr@hadoop102 .ssh]$ ssh-copy-id wyr@hadoop103
wyr@hadoop103's password:
Now try logging into the machine, with "ssh 'wyr@hadoop103'", and check in:
.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.
[wyr@hadoop102 ~]$ ssh hadoop103
Last login: Tue Jan 26 16:29:38 2021 from hadoop101
[wyr@hadoop102 ~]$ exit
logout
Connection to hadoop103 closed.
[wyr@hadoop102 ~]$
3、配置非登录状态的环境变量
3.1 Login Shell登录脚本的执行顺序:【注:仅适用于 bash shell】
Login Shell:是指登录时,需要提供用户名密码的shell,如:su – user1 , 图形登录, ctrl+alt+F2-6进入的登录界面。这种Login shell 执行脚本的顺序:
- /etc/profile 【全局profile文件;它定义了LoginUser的 PATH, USER, LOGNAME(登录使用者帐号)】
- /etc/profile.d/目录下的脚本
- ~/.bash_profile 【搜索命令的路径 ——————- 登录级别 环境变量配置文件 】
- ~/.bashrc 【存储用户设定的别名和函数 ———- shell级别 环境变量配置文件】
- /etc/bashrc 【全局bashrc文件; 它主要定义一些 Function 和 Alias;更改/etc/bashrc会影响到所有用户,由root用户管理。】
- 例如:在hadoop101虚拟机上通过ssh hadoop102登陆hadoop102虚拟机,会自动读取/etc/profile环境变量文件中定义的所有的变量
- 因为java的/opt/module/jdk1.8.0_121/bin/jps命令已经配置到了/etc/profile环境变量中,
- 所以可以直接执行jps命令,
[wyr@hadoop101 ~]$ ssh hadoop102
Last login: Tue Jan 26 20:53:59 2021 from hadoop101
[wyr@hadoop102 ~]$ jps
3626 Jps
[wyr@hadoop102 ~]$
3.2 Non-Login shell登录脚本的执行顺序:【注:仅适用于 bash shell】
Non-Login shell:登录终端后,使用ssh 登录 其他机器! 非登录shell指的是,不需要输入用户名密码的shell,如图形下 右键terminal,或ctrl+shift+T打开的shell。这种Non-Login shell 执行登录脚本的顺序:
- ~/.bashrc
- /etc/bashrc
- /etc/profile.d/目录下的脚本
- 例如:在hadoop102虚拟机上通过ssh hadoop101 jps 直接执行hadoop101虚拟机上的jps命令,
- 不会自动读取hadoop101虚拟机上的/etc/profile环境变量文件
- 而java的/opt/module/jdk1.8.0_121/bin/jps命令是配置到在/etc/profile环境变量中的
- 所以会失败
[wyr@hadoop102 ~]$ ssh hadoop101 jps
bash: jps: command not found
[wyr@hadoop102 ~]$
3.3 让Non-Login shell登录脚本也执行/etc/profile环境变量的方法
- 在虚拟机上的~/.bashrc文件中引入/etc/profile环境变量即可
- 如果在使用命令时,我们需要使用/etc/profile定义的一些变量,需要在目标机器的对应的用户的家目录 /home/.bashrc中添加以下代码
source /etc/profile
- 如果不在 /home/.bashrc文件中添加以上代码,在执行start-all.sh | stop-all.sh 这些Hadoop群起脚本时一定会报错!
[wyr@hadoop101 ~]$ ls
Desktop Documents Downloads Music Pictures Public Templates Videos
[wyr@hadoop101 ~]$ ll -la
total 164
drwx------. 27 wyr wyr 4096 Jan 26 17:58 .
drwxr-xr-x. 3 root root 4096 Jan 26 11:03 ..
drwxrwxr-x. 2 wyr wyr 4096 Jan 26 11:17 .abrt
-rw-------. 1 wyr wyr 2928 Jan 26 20:54 .bash_history
-rw-r--r--. 1 wyr wyr 18 May 11 2016 .bash_logout
-rw-r--r--. 1 wyr wyr 176 May 11 2016 .bash_profile
-rw-r--r--. 1 wyr wyr 124 May 11 2016 .bashrc
drwxr-xr-x. 3 wyr wyr 4096 Jan 26 11:52 .cache
drwxr-xr-x. 5 wyr wyr 4096 Jan 26 11:17 .config
drwx------. 3 wyr wyr 4096 Jan 26 11:17 .dbus
drwxr-xr-x. 2 wyr wyr 4096 Jan 26 11:17 Desktop
drwxr-xr-x. 2 wyr wyr 4096 Jan 26 12:00 Documents
drwxr-xr-x. 2 wyr wyr 4096 Jan 26 11:17 Downloads
-rw-------. 1 wyr wyr 16 Jan 26 11:17 .esd_auth
drwx------. 4 wyr wyr 4096 Jan 26 14:42 .gconf
drwx------. 2 wyr wyr 4096 Jan 26 14:57 .gconfd
drwxr-xr-x. 6 wyr wyr 4096 Jan 26 11:52 .gnome2
drwx------. 2 wyr wyr 4096 Jan 26 11:52 .gnome2_private
drwxrwxr-x. 3 wyr wyr 4096 Jan 26 11:17 .gnote
drwx------. 2 wyr wyr 4096 Jan 26 14:42 .gnupg
-rw-rw-r--. 1 wyr wyr 127 Jan 26 14:42 .gtk-bookmarks
drwx------. 2 wyr wyr 4096 Jan 26 11:17 .gvfs
-rw-------. 1 wyr wyr 930 Jan 26 14:42 .ICEauthority
-rw-r--r--. 1 wyr wyr 631 Jan 26 14:42 .imsettings.log
drwxr-xr-x. 3 wyr wyr 4096 Jan 26 11:17 .local
drwxr-xr-x. 5 wyr wyr 4096 Jan 26 11:52 .mozilla
drwxr-xr-x. 2 wyr wyr 4096 Jan 26 11:17 Music
drwxr-xr-x. 2 wyr wyr 4096 Jan 26 11:17 .nautilus
drwxrwxr-x. 2 wyr wyr 4096 Jan 26 11:55 .oracle_jre_usage
drwxr-xr-x. 2 wyr wyr 4096 Jan 26 11:17 Pictures
drwxr-xr-x. 2 wyr wyr 4096 Jan 26 11:17 Public
drwx------. 2 wyr wyr 4096 Jan 26 11:17 .pulse
-rw-------. 1 wyr wyr 256 Jan 26 11:17 .pulse-cookie
drwx------. 2 wyr wyr 4096 Jan 26 16:28 .ssh
drwxr-xr-x. 2 wyr wyr 4096 Jan 26 11:17 Templates
drwxr-xr-x. 2 wyr wyr 4096 Jan 26 11:17 Videos
-rw-------. 1 wyr wyr 1193 Jan 26 17:58 .viminfo
-rw-------. 1 wyr wyr 110 Jan 26 17:58 .Xauthority
-rw-------. 1 wyr wyr 2722 Jan 26 14:57 .xsession-errors
-rw-------. 1 wyr wyr 4407 Jan 26 12:27 .xsession-errors.old
[wyr@hadoop101 ~]$
[wyr@hadoop101 ~]$ vim .bashrc
在文件尾部添加 “source /etc/profile” :
# .bashrc
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
# User specific aliases and functions
source /etc/profile
在hadoop102虚拟机上通过ssh hadoop101 jps 再次直接执行hadoop101虚拟机上的jps命令,成功。
[wyr@hadoop102 ~]$ ssh hadoop102 jps
3655 Jps
[wyr@hadoop102 ~]$
4、编写 “集群分发文件” 脚本:xsync.sh
-
scp(安全拷贝):全量复制
scp -r 源文件用户名A@主机名1:path1 目标文件用户名B@主机名2:path2
-r: 递归,复制目录 如果从本机执行读取或写入,用户名B@主机名2:可以省略! 在主机1上,使用A用户读取path1的文件,再使用用户B登录到主机2,在主机2的path2路径执行写入! 要求: 用户名A@主机名1 对path1有读权限 用户名B@主机名2 对path2有写权限
-
rsync (远程同步):可以只同步变化的文件(对比文件的修改时间)!增量同步!
rsync -rvlt path1 目标文件用户名B@主机名2:path2
-r: 递归,复制目录 -v: 显示复制的过程 -l: 同步软连接 -t: 基于文件的修改时间进行对比,只同步修改时间不同的文件 只能将本机的文件同步到其他机器! 注意: rsync -rvlt path1 目标文件用户名B@主机名2:path2 path1是个目录,目录以/结尾,只会同步目录中的内容,不会同步目录本身! path1是个目录,目录不以/结尾,同步目录中的内容,也会同步目录本身!
-
编写同步脚本xsync:将当前机器的文件,同步到集群所有机器的相同路径下!
hadoop102:/A/a , 执行脚本后,将此文件同步到集群中所有机器的 /A/a 用户在使用xsync时,只需要传入要同步的文件即可 xysnc a 不管a是一个相对路径还是绝对路径,都需要将a转换为绝对路径! 文件的绝对路径: 父路径: dirpath=$(cd `dirname /home/atguigu/hi`; pwd -P) 文件名: filename=`basename hi` 核心命令: for(()) do rsync -rvlt path1 done
在Linux系统中的vim编辑器中编写,如果用window系统编写后直接上传,会出问题。doc下的文本内容格式和unix下的格式有所不同,比如dos文件传输到unix系统时,会在每行的结尾多一个^M结束符。
在第二台Linux虚拟机hadoop102的/home/wyr目录中创建xsync.sh脚本
#!/bin/bash
#校验参数是否合法
#"$#"功能:获取所有输入参数个数,用于循环
if(($#==0))
then
echo 请输入要分发的文件!
exit;
fi
#获取分发文件的绝对路径
dirpath=$(cd `dirname $1`; pwd -P)
filename=`basename $1`
echo 要分发的文件的路径是:$dirpath/$filename
#循环执行rs