集群分发脚本xsync

rsync简介

rsync 是 "remote synchronization" 的简写,这个工具主要用于远程和本地系统之间同步文件和目录,优化了数据传输过程,只传输变化的部分。它被广泛应用于备份操作、镜像制作以及其他需要文件或目录同步的场景。rsync 在功能丰富且高效的同时,也保证了传输安全性。

rsync创建与使用

脚本创建前提,三台机器已经配置好免密登录,具体参照:https://mp.csdn.net/mp_blog/creation/editor/136015542

作用:循环复制文件到所有节点的相同目录下

核心:rsync -av /opt/module root@hadoop103:/opt/

归档模式(-a)和冗余信息模式(-v)同步文件或目录到远程机器的对应路径

用的家目录/home/user下创建bin文件夹

切换到user目录

cd /home/user

创建bin目录

mkdir bin

切换到bin目录

cd /home/user/bin

创建rsync脚本

vim xsync

在文件中编写如下代码

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

集群分发脚本xsync_第1张图片

修改脚本rsync具有执行权限

chmod +x xsync

 

 测试脚本

xsync xsync

rsync与scp区别

脚本中使用的 rsync 命令和 scp 命令都可以用于在不同的机器之间复制文件,但它们之间有一些关键的区别:

scp 命令

  • scp (secure copy) 是一个基于 SSH 的文件传输工具,可以在本地和远程之间安全地复制文件或目录。
  • scp 复制文件时,会传输整个文件,不管目的地是否已经有一个旧版本的文件。
  • scp 适合于单次传输较少的文件,特别是当你不需要考虑文件同步的复杂性时。

rsync 命令

  • rsync 是一个应用层的文件同步和传输工具,也可以通过 SSH 进行操作。
  • rsync 在复制文件时会进行更多检查,它默认只传输变化了的部分(通过比较文件的大小和最后修改时间),这样可以减少数据传输量,提高效率。
  • rsync 可以保持原有的文件权限和时间戳信息,并支持对文件传输过程进行更多控制,比如排除某些文件、使用压缩来传输等。
  • rsync 特别适合定期同步大量数据或目录结构,能够保证目的地的文件是最新的,并且与源数据保持一致。

脚本中使用 rsync 的优势

在你给出的脚本中,使用 rsync 而不是 scp 的几个可能原因包括:

  1. 效率:如果文件已经存在于远程节点,rsync 会通过同步文件的差异部分来优化传输过程,这比 scp 复制整个文件更高效。
  2. 目录创建:脚本中先在远程主机上创建了相应的目录结构,确保文件可以被放置在正确的位置。这是 scp 在默认情况下不会做的。
  3. 递归复制rsync 通过 -a 参数可以递归地复制目录,并且保留文件的属性和权限。
  4. 冗余输出:使用 -v 参数可以让 rsync 输出详细的信息,帮助用户了解哪些文件被传输了。

综上,rsync 提供的灵活性和效率使其成为同步文件到多个远程主机的理想选择,尤其是在你需要频繁更新或维护文件一致性的场景

你可能感兴趣的:(Hadoop集群安装部署,服务器,linux,网络)