rsync-集群机器之间的拷贝

一般情况下都是用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

你可能感兴趣的:(rsync-集群机器之间的拷贝)