一般情况下都是用scp进行拷贝,这里介绍一个更加优质的工具——rsync
rsync 远程同步工具
rsync主要用于备份和镜像。具有速度快、避免复制相同内容和支持符号链接的优点。
rsync和scp区别: 用rsync做文件的复制要比scp的速度快,rsync只对差异文件做更新。scp是把所有文件都复制过去。
安装:
yum install rsync -y
命令 | 选项参数 | 要拷贝的文件路径/名称 | 目的用户@主机:目的路径/名称 |
---|---|---|---|
rsync | -av | $pdir/$fname | $user@hadoop$host:$pdir/$fname |
选项参数说明:
选项 | 功能 |
---|---|
-a | 归档拷贝(全拷贝,包括权限,时间戳,递归目录等等) |
-v | 显示复制过程 |
eg:把node2上的/opt/soft目录同步到node1的/opt目录下(root用户),默认是root
(实例是远端文件复制到本机)
# root@node2
[root@node1 opt]$ rsync -av node2:/opt/soft /opt/soft
最后,奉上一个拷贝脚本:
#!/bin/bash
#判断是否有参数, -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`
# 发送至每个节点,我这里hostname是以cdh开头, 1-3
for((host=1; host<4; host++)); do
echo ------------------- csync cdh$host --------------
rsync -av $sdir/$filename $user@cdh$host:$sdir
done