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
相关推荐
和光同尘202310 分钟前
一文讲透CentOS下安装部署使用MYSQL
linux·运维·数据库·数据仓库·mysql·centos·database
0.0雨11 分钟前
设置集群的SSH免密登陆
linux·服务器·ssh
FVV112311 分钟前
Windows键盘鼠标自动化工具,免费永久使用
运维·自动化
胖咕噜的稞达鸭12 分钟前
【Linux系统编程】解密环境变量与进程地址空间
linux·运维·chrome
峰顶听歌的鲸鱼12 分钟前
17.docker:监控及日志
linux·运维·docker·容器·云计算
一颗青果16 分钟前
Linux下的线程
linux·运维·服务器
wdfk_prog17 分钟前
[Linux]学习笔记系列 -- [fs]fs_context
linux·笔记·学习
_OP_CHEN25 分钟前
【Linux系统编程】(十八)Linux 进程创建与终止进阶:等待机制与程序替换的底层密码
linux·服务器·操作系统·进程·进程等待·进程替换·exec函数族
未来之窗软件服务26 分钟前
服务器运维(二十)服务器防护双雄:Fail2ban 与 CrowdSec 入门指南——东方仙盟炼气期
运维·服务器·东方仙盟
FreeBuf_28 分钟前
n8n工作流自动化平台曝高危漏洞(CVE-2025-68613,CVSS 9.9):数万实例面临任意代码执行风险
运维·自动化