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
相关推荐
悟道书生几秒前
第三方服务器访问视图
运维·服务器
进击的荆棘6 分钟前
Linux系统——库的原理与制作之ELF文件的形成与加载的过程(上)
linux·elf·动静态库
额额额对了20 分钟前
Linux 内核定时器与 DHT11
linux·运维·服务器
KIDULT°9 小时前
MySQL系列 (1):数据库原理
运维·数据库·mysql·云计算
别动我齐刘海10 小时前
C++ 工程化学习
java·linux·前端·c++·学习·机器学习·机器人
wewowilling12 小时前
认识微服务
java·运维·微服务·springcloud
玖石书12 小时前
Ubuntu 24.04 UFW 全命令攻略:从入门到端口开放实战
linux·运维·ubuntu
xiaoqiMikko12 小时前
Linux 实战(七):useradd、sudoers、umask、SGID、软链 —— 三台真机实测
linux·centos
weifont13 小时前
自动化抓取和上架商品:能不动手,就少动手
运维·前端·自动化
拂拉氏14 小时前
【知识讲解】 Linux之动静态库的了解
linux·运维·服务器·动静态库