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 分钟前
clickhouse创建用户,登录出错的问题,code 516
linux·服务器·clickhouse
wkd_0077 分钟前
【交叉编译 | arm版Ubuntu】arm版Ubuntu(飞腾平台)开发环境、交叉编译工具安装
linux·arm开发·ubuntu·aarch64-linux·arm交叉编译工具
YongCheng_Liang16 分钟前
分布式数据库核心原理深度解析:架构、理论与事务解决方案
运维·数据库·sql
chem411123 分钟前
ONENET API创建设备并返回设备密钥和设备ID
运维·服务器·mysql
UrSpecial29 分钟前
IM项目——消息转发子服务
运维·服务器
菜鸟厚非31 分钟前
如何在 Nginx 中配置 HTTPS - Linux
linux·nginx·https
biter008838 分钟前
Ubuntu 上搜狗输入法突然“消失 / 只能英文”的排查与修复教程
linux·数据库·ubuntu
草根站起来44 分钟前
S/MIME电子邮件证书
运维·服务器
venus601 小时前
网络运维之ping与telnet的区别
运维·服务器·网络
sxgzzn1 小时前
如何有效提升开关柜与电缆的故障监测能力?
运维·电缆绝缘监测·电缆在线监测·局部放电在线监测·局放在线监测