文件分发脚本

概述

大数据环境有很多台主机,每台的配置文件基本一致,为了快速的给每台机器拷贝一份相同的文件。在这里记录一下一个小脚本,利用rsync辅助

1、安装rsync

yum -y install rsync

2、创建脚本
 

#附权限
touch xsync.sh 
#附权限
chmod a+x xsync.sh
#移动到 /usr/local/bin/ 下面 
mv xsync.sh /usr/local/bin/ 
#!/bin/bash

if [[ $# -lt 1 ]] ; then echo no params ; exit ; fi

p=$1
#echo p=$p
dir=`dirname $p`
#echo dir=$dir
filename=`basename $p`
#echo filename=$filename
cd $dir
fullpath=`pwd -P .`
#echo fullpath=$fullpath

user=`whoami`
for (( i = 2 ; i <= 5 ; i = $i + 1 )) ; do
echo ======= cdh0$i =======
rsync -lr $p ${user}@cdh0$i:$fullpath
done ;

脚本2:

#!/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

解释

rsync(remote synchronize)是一个远程数据同步工具,可通过 LAN/WAN 快速同步多台主机之间的文件。也可以使用 rsync 同步本地硬盘中的不同目录。
rsync 是用于替代 rcp 的一个工具,rsync 使用所谓的 rsync算法 进行数据同步,这种算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快。 您可以参考 How Rsync Works A Practical Overview 进一步了解 rsync 的运作机制。
rsync 的初始作者是 Andrew Tridgell 和 Paul Mackerras,目前由 http://rsync.samba.org 维护。
rsync 支持大多数的类 Unix 系统,无论是 Linux、Solaris 还是 BSD上 都经过了良好的测试。 CentOS系统默认就安装了 rsync 软件包。 此外,在 windows 平台下也有相应的版本,如 cwrsync 和DeltaCopy 等。
rsync 具有如下的基本特性:

  1. 可以镜像保存整个目录树和文件系统

  2. 可以很容易做到保持原来文件的权限、时间、软硬链接等

  3. 无须特殊权限即可安装

  4. 优化的流程,文件传输效率高

  5. 可以使用 rsh、ssh 方式来传输文件,当然也可以通过直接的 socket 连接

  6. 支持匿名传输,以方便进行网站镜象

在使用 rsync 进行远程同步时,可以使用两种方式:远程 Shell 方式(建议使用 ssh,用户验证由 ssh 负责)和 C/S 方式(即客户连接远程 rsync 服务器,用户验证由 rsync 服务器负责)。
无论本地同步目录还是远程同步数据,首次运行时将会把全部文件拷贝一次,以后再运行时将只拷贝有变化的文件(对于新文件)或文件的变化部分(对于原有文件)。
本节重点介绍 rsync 客户命令的使用,有关 rsync 服务器的配置和使用请参见下节
rsync 在首次复制时没有速度优势,速度不如 tar,因此当数据量很大时您可以考虑先使用 tar 进行首次复制,然后再使用 rsync 进行数据同步。

为什么不用scp命令

scp是相当于复制,黏贴,如果有的话是覆盖,比较耗时间,不智能。

rsync是复制,如果有重复的文件,会直接跳过,而且他自己的算法优化。

scp是把文件全部复制过去,当文件修改后还是把所有文件复制过去,rsync 第一次是把所有文件同步过去,当文件修改后,只把修改的文件同步过去。

用法

rsync 文件/文件名

如:rsync test

rsync test.txt

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值