rsync主要用於備份和鏡像,具備速度快、避免複製相同內容和支持符號連接的優勢。算法
rsync -av $pdir/$fname $user@hadoop$host:$pdir/$fname
命令 選項參數 要拷貝的文件路徑/名稱 目的用戶@主機:目的路徑/名稱bash
命令 選項參數 要拷貝的文件路徑/名稱 目的用戶@主機:目的路徑/名稱 rsync -av $pdir/$fname $user@hadoop$host:$pdir/$fname
選項 | 功能 |
---|---|
-a | 歸檔拷貝 |
-v | 顯示覆制過程 |
執行命令可循環複製文件到全部節點的相同目錄下服務器
指望腳本: xsync 要同步的文件名稱ssh
說明:在/usr/local/bin這個目錄下存放的腳本,用戶能夠在系統任何地方直接執行。oop
也能夠放到當前用戶如 /home/luffy/bin 下建立的/bin目錄中測試
#!/bin/bash #1 獲取輸入參數個數,若是沒有參數,直接退出 pcount=$# if [ $pcount -lt 1 ] then echo Not Enough Arguement! exit; fi #2. 遍歷集羣全部機器 for host in luffy1 luffy2 luffy3 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
[root@luffy1 bin]# chmod 777 xsync
[root@luffy3 bin]# xsync aaa
腳本能夠正常運行, 可是須要每次輸入密碼. 免密登陸便可實現簡化密碼輸入spa
免密登錄原理:code
配置免密登錄blog
a)生成密鑰對遞歸
[zxy@hadoop102 .ssh]$ ssh-keygen -t rsa
b)將公鑰拷貝到要免密登陸的目標機器上
[zxy@hadoop102 .ssh]$ ssh-copy-id hadoop102 [zxy@hadoop102 .ssh]$ ssh-copy-id hadoop103 [zxy@hadoop102 .ssh]$ ssh-copy-id hadoop104
c)分別ssh直接登錄hadoop102
ssh hadoop103
3.).ssh文件夾下(~/.ssh)的文件功能解釋
文件名 | 功能 |
---|---|
known_hosts | 記錄ssh訪問過計算機的公鑰(public key) |
id_rsa | 生成的私鑰 |
id_rsa.pub | 生成的公鑰 |
authorized_keys | 存放受權過得無密登陸服務器公鑰 |