(1)scp定義:scp可以實現伺服器與伺服器之間的資料拷貝。(from server1 to server2)
(2)基本語法
scp -r $pdir/$fname
$user@hadoop
$host
:$pdir/$fname
命令 遞迴 要拷貝的檔案路徑/名稱 目的使用者@主機:目的路徑/名稱
注意:
如果目標目錄不存在,直接將源test放到opt目錄下
scp -r test/ root@hadoop102:/opt/目標目錄/
如果目標目錄存在,將源test放到opt/test目錄下
scp -r test/ root@hadoop102:/opt/目標目錄/
將源內容直接拷貝到目標目錄下
scp -r test/* root@hadoop102:/opt/目標目錄/
(3)案例實操
(a)在hadoop101上,將hadoop101中/opt/module目錄下的軟體拷貝到hadoop102上。
scp -r /opt/module root@hadoop102:/opt/module
(b)在hadoop103上,將hadoop101伺服器上的/opt/module目錄下的軟體拷貝到hadoop103上。
sudo
scp -r atguigu@hadoop101:/opt/module root@hadoop103:/opt./module
(c)在hadoop103上操作將hadoop101中/opt/module目錄下的軟體拷貝到hadoop104上。
scp -r atguigu@hadoop101:/opt/module root@hadoop104:/opt/module
注意:拷貝過來的/opt/module目錄,別忘了在hadoop102、hadoop103、hadoop104上修改所有檔案的,所有者和所有者組。sudo chown atguigu:atguigu -r /opt/module
(d)將hadoop101中/etc/profile檔案拷貝到hadoop102的/etc/profile上。
sudo
scp /etc/profile root@hadoop102:/etc/profile
(e)將hadoop101中/etc/profile檔案拷貝到hadoop103的/etc/profile上。
sudo
scp /etc/profile root@hadoop103:/etc/profile
(f)將hadoop101中/etc/profile檔案拷貝到hadoop104的/etc/profile上。
sudo
scp /etc/profile root@hadoop104:/etc/profile
注意:拷貝過來的配置檔案別忘了source一下/etc/profile
rsync主要用於備份和映象。具有速度快、避免複製相同內容和支援符號鏈結的優點。
rsync和scp區別:用rsync做檔案的複製要比scp的速度快,rsync只對差異檔案做更新。scp是把所有檔案都複製過去。
(1)基本語法
rsync -rvl $pdir/$fname
$user@hadoop
$host
:$pdir/$fname
命令 選項引數 要拷貝的檔案路徑/名稱 目的使用者@主機:目的路徑/名稱
選項引數說明
(2)案例實操
把hadoop101機器上的/opt/software目錄同步到hadoop102伺服器的root使用者下的/opt/目錄
rsync -rvl /opt/software/ root@hadoop102:/opt/software
3.xsync集群分發指令碼
(1)需求:迴圈複製檔案到所有節點的相同目錄下
(2)說明:在/home/使用者名稱/bin
這個目錄下存放的指令碼,該使用者可以在系統任何地方直接執行。
(3)指令碼實現
(a)在/home/使用者名稱
目錄下建立bin目錄,並在bin目錄下xsync建立檔案
#!/bin/bash
# 引數說明
# $1 ==> 要拷貝的檔案的絕對路徑
# $2 ==> 主機起始尾號,如hadoop101中的101
# $3 ==> 主機結束尾號,如hadoop103中的103
# 使用方法示例
# xsync /home/guapi/a.txt 101 103
#1 獲取輸入引數個數,如果沒有引數,直接退出
pcount=$#if[
$pcount -ne 3 ]
;then
echo
"args count no correct"
;exit;fi
#2 獲取檔名稱
p1=$1
onlyfilename=
`basename $p1`
echo
"file name : $onlyfilename"
pdir=
`cd -p $(dirname $p1)
;pwd
`echo
"dir : $pdir"
#4 獲取當前使用者名稱
user=
`whoami
`#5 迴圈
for((host=$2
;host<=$3
;host++));
doecho
"********** hadoop$host **********"
rsync -rvl $pdir/$onlyfilename
$user@hadoop
$host
:$pdir
done
(b)修改指令碼 xsync 具有執行許可權
chmod 777 xsync
注意:如果將xsync放到/home/使用者名稱/bin
目錄下仍然不能實現全域性使用,可以將xsync移動到/usr/local/bin
目錄下。
生成公鑰和私鑰
ssh-keygen -t rsa
將公鑰拷貝到要免密登入的目標機器上
ssh-copy-id hadoop103
ssh-copy-id hadoop104
注意:ssh訪問自己也需要輸入密碼,所以我們需要將公鑰也拷貝給102
ssh-copy-id hadoop102
以ssh方式執行遠端命令時,是nologin的,那麼此方式不會載入/etc/profile
,而是載入/etc/bashrc
,參考
所以,在使用ssh執行遠端命令的時候會遇到shell指令碼找不到的問題,把環境變數配到/etc/bashrc
即可
集群分發指令碼
分發指令碼使用前提 需要讓linux01機器知道linux02和linux03代表的是哪個ip 1 在 usr local bin目錄下建立xsync檔案,檔案內容如下 cd usr local bin vim xsync bin bash 1 獲取輸入引數個數,如果沒有引數,直接退出 pcount...
xsync集群分發指令碼
作用 迴圈複製檔案到所有節點的相同目錄下 第一步cd home 使用者名稱 bin touch xsync vi xsync注意 如果將xsync放到 home 使用者名稱 bin目錄下仍然不能實現全域性使用,可以將xsync移動到 usr local bin目錄下。第二步 bin bash 1 獲...
集群分發指令碼 xsync
1.scp secure copy 安全拷貝 1 scp定義 scp可以實現伺服器與伺服器之間的資料拷貝。from server1 to server2 2 基本語法 scp r pdir fname user hadoop host pdir fname 命令 遞迴 要拷貝的檔案路徑 名稱 目的使...