一般情況下都是用scp進行拷貝株汉,這里介紹一個更加優(yōu)質的工具——rsync
rsync 遠程同步工具
rsync主要用于備份和鏡像冒版。具有速度快液茎、避免復制相同內容和支持符號鏈接的優(yōu)點。
rsync和scp區(qū)別: 用rsync做文件的復制要比scp的速度快,rsync只對差異文件做更新捆等。scp是把所有文件都復制過去哼凯。
安裝:
yum install rsync -y
命令 | 選項參數(shù) | 要拷貝的文件路徑/名稱 | 目的用戶@主機:目的路徑/名稱 |
---|---|---|---|
rsync | -av | $pdir/$fname | $user@hadoop$host:$pdir/$fname |
選項參數(shù)說明:
選項 | 功能 |
---|---|
-a | 歸檔拷貝(全拷貝,包括權限,時間戳,遞歸目錄等等) |
-v | 顯示復制過程 |
eg:把node2上的/opt/soft目錄同步到node1的/opt目錄下(root用戶),默認是root
(實例是遠端文件復制到本機)
# root@node2
[root@node1 opt]$ rsync -av node2:/opt/soft /opt/soft
最后,奉上一個拷貝腳本:
#!/bin/bash
#判斷是否有參數(shù), -z 長度為0->true
if [ -z $1 ]; then
echo "Usage: csync [filedir]"
exit
fi
filedir=$1
#獲取文件名稱 basename
filename=`basename $filedir`
echo "csync filename $filename"
# 獲取絕對路徑,-P獲取真實絕對路徑
sdir=`cd -P $(dirname $filedir); pwd`
echo sdir=$sdir
# 獲取當前用戶名稱
user=`whoami`
# 發(fā)送至每個節(jié)點,我這里hostname是以cdh開頭楚里, 1-3
for((host=1; host<4; host++)); do
echo ------------------- csync cdh$host --------------
rsync -av $sdir/$filename $user@cdh$host:$sdir
done