集群分发脚本xsync
生活随笔
收集整理的這篇文章主要介紹了
集群分发脚本xsync
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
編寫集群分發腳本xsync
1)scp 安全拷貝
1)定義:
scp可以實現服務器與服務器之間的數據拷貝
2)特點
scp會把整個文件對象賦值到目標服務器上
3)基本語法
scp -r $pdir/$fname $user@$host:$pdir/$fname
命令 遞歸 要拷貝的文件路徑/名稱 目的用戶@主機:目的路徑/名稱
例如
scp -r /opt/module/hadoop/* atguigu@hadoop102:/opt/module
2)rsync(推薦使用)
注:想使用rsync命令,必須提前安裝
安裝語法
yum install rsync
1)特點
只會對差異文件進行更新,而scp是把所有文件都復制過去
2)基本語法
rsync -av $pdir/$fname $user@hadoop$host:$pdir/$fname
命令 選項參數 要拷貝的文件路徑/名稱 目的用戶@主機:目的路徑/名稱
例如
rsync -av /opt/software/* atguigu@hadoop103:/opt/software(這里要寫父目錄的路徑)
選項參數說明
| 選項 | 功能 |
|---|---|
| -a | 歸檔拷貝(類似于遞歸) |
| -v | 顯示復制過程 |
編寫集群分發腳本(重點)
1)需求:需要將當前文件或目錄同步到當前集群所有節點
2)思路
使用原始命令需要發送N次,可以使用shell腳本,把原始命令放在循環內,可以重復使用
采用rsync實現,因為rsync只會發送有差異的數據
3)實現腳本
#!/bin/bash
#1. 判斷參數個數
if [ $# -lt 1 ]
then
echo Not Enough Arguement!
exit;
fi
#2. 遍歷集群所有機器
for host in hadoop102 hadoop103 hadoop104
do
echo ==================== $host ====================
#3. 遍歷所有目錄,挨個發送
for file in $@
do
#4. 判斷文件是否存在
if [ -e $file ]
then
#5. 獲取父目錄
pdir=$(cd -P $(dirname $file); pwd)
#6. 獲取當前文件的名稱
fname=$(basename $file)
ssh $host "mkdir -p $pdir"
rsync -av $pdir/$fname $host:$pdir
else
echo $file does not exists!
fi
done
done
1)修改腳本xsync具有執行權限
[atguigu@hadoop102 bin]$ chmod +x xsync
2)將腳本復制到/bin中,以便全局調用
如果當前用戶沒有bin目錄,可以手動創建
[atguigu@hadoop102 bin]$ sudo cp xsync /bin/
腳本編寫完成,可以測試了
總結
以上是生活随笔為你收集整理的集群分发脚本xsync的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 天天基金
- 下一篇: 掌上英雄联盟如何设置不让别人看战绩