Linux:服务器间同步文件的脚本(实用)

一、功能描述

比如有三台服务器,hadoop102、hadoop103、hadoop104,且都有atguigu账号

循环复制文件到所有节点的相同目录下,且脚本可以在任何路径下使用

二、脚本实现

1、查看环境变量

bash 复制代码
echo $PATH

2、进入/home/atguigu/bin目录

在该目录下创建脚本,则该脚本可以在任何路径下使用,因为,这个路径添加在环境变量中

3、创建脚本文件xsync

shell 复制代码
#!/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

4、修改脚本权限

bash 复制代码
chmod 777 xsync

三、优化

如果想在执行脚本的时候,避免输入服务器密码,那么,需要配置服务器间的免密登陆

参考:Linux服务器间配置免密登陆

相关推荐
神梦流12 分钟前
GE 引擎的非标准数据流处理:稀疏张量与自定义算子在图优化中的语义保持
linux·运维·服务器
.小墨迹1 小时前
apollo学习之借道超车的速度规划
linux·c++·学习·算法·ubuntu
Lsir10110_1 小时前
【Linux】中断 —— 操作系统的运行基石
linux·运维·嵌入式硬件
Sheffield1 小时前
command和shell模块到底区别在哪?
linux·云计算·ansible
历程里程碑1 小时前
Linux20 : IO
linux·c语言·开发语言·数据结构·c++·算法
郝学胜-神的一滴2 小时前
深入浅出:使用Linux系统函数构建高性能TCP服务器
linux·服务器·开发语言·网络·c++·tcp/ip·程序人生
承渊政道2 小时前
Linux系统学习【Linux系统的进度条实现、版本控制器git和调试器gdb介绍】
linux·开发语言·笔记·git·学习·gitee
技术路上的探险家2 小时前
Ubuntu下Docker与NVIDIA Container Toolkit完整安装教程(含国内源适配)
linux·ubuntu·docker
代码AC不AC2 小时前
【Linux】深入理解缓冲区
linux·缓冲区·标准错误
Doro再努力2 小时前
【Linux操作系统12】Git版本控制与GDB调试:从入门到实践
linux·运维·服务器·git·vim