Shell常用脚本:文件或目录一键同步到多台服务器

注意: 将本地文件,同步到【/opt/module/script/xsyncByFileIp.txt】里面的目标机器

xsyncByFile.sh

sh 复制代码
#!/bin/bash

# 入参参数个数
argsCount=$#

if(($argsCount==0)); then

echo "同步失败:请输入待同步的文件或者目录"
exit;
fi


echo "待同步的文件:$1"

# 绝对路径
syncArgFile=$1
# 仅获取文件名,不带父路径
syncArgFileName=`basename $syncArgFile`


#if[! -e "$syncArgFile"]; then
if [ ! -e "$syncArgFile" ]; then
echo "同步失败:入参的文件或目录【$syncArgFile】不存在,请检查"
exit
fi


# 获取入参文件的父目录,以及进行入参文件所在的目录
syncArgFileNameParentDirPath=`cd -P $(dirname $syncArgFile) && pwd`
echo "当前所在目录:$syncArgFileNameParentDirPath"


xsyncByFileIpPath=/opt/module/script/xsyncByFileIp.txt
xsyncByFileIpContentRow=`cat xsyncByFileIp.txt  | wc -l`

if(($xsyncByFileIpContentRow==0)); then

echo "同步失败:请在$xsyncByFileIpPath 填入需要同步到的目标机器,每行内容是一个目标机器"
exit
fi



while read ip; do
  echo -e "\n\n===============$ip===============" 
  echo "正在将文件同步到目标机器【$ip】"

  rsync -rvl $syncArgFileNameParentDirPath/$syncArgFileName root@$ip:$syncArgFileNameParentDirPath

  echo -e "文件同步到目标机器【$ip】完成"
  echo -e "======================================" 
done < "$xsyncByFileIpPath"



echo -e  "\n\n同步结束\n\n"

使用示例:

sh 复制代码
sh xsyncByFile.sh /test
相关推荐
隔壁小红馆2 分钟前
docker 部署pgsql
运维·docker·容器
CIb0la4 分钟前
数字时代,传统碟片的销量不减反增
运维·生活
代码游侠16 分钟前
学习笔记——写时复制(Copy-on-Write)
linux·网络·笔记·学习·写时复制
wanhengidc25 分钟前
云手机 开发测试中的便捷工具
运维·服务器·科技·智能手机·云计算
被AI抢饭碗的人27 分钟前
linux:线程同步与互斥
linux·开发语言
HalvmånEver37 分钟前
Linux:基础IO(终)
linux·运维·c++·学习·缓冲区·libc
西柚小萌新1 小时前
【计算机常识】--Windows 安装 WSL2 并运行 Ubuntu 22.04
linux·windows·ubuntu
大江东第一深情1 小时前
Origin 2024 进行语言切换后仍然显示为英文
运维·前端
福尔摩斯张1 小时前
基于TCP的FTP文件传输系统设计与实现(超详细)
linux·开发语言·网络·网络协议·tcp/ip·udp
Sleepy MargulisItG1 小时前
【Linux网络编程】应用层自定义协议与序列化
linux·服务器·网络·网络协议·tcp/ip