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
相关推荐
RisunJan3 小时前
Linux命令-parted(磁盘分区工具)
linux·运维
艾莉丝努力练剑3 小时前
【QT】界面优化:QSS
linux·运维·开发语言·网络·qt·计算机网络·udp
岭锅锅3 小时前
机房磁控U位资产管理系统:让数据中心资产管理告别粗放式运维
运维·机房·数据机房管理
煜3643 小时前
进程控制知识
linux·运维·服务器
secret_to_me3 小时前
buildRoot编译rootfs实战
linux·c语言·c++·ubuntu·电脑·buildroot
凡人叶枫3 小时前
Effective C++ 条款01:视 C++ 为一个语言联邦
linux·开发语言·c++·effective c++·编程范式·语言联邦
paul_chen213 小时前
CentOS 8 LVM 在线扩容根分区:从 home 安全割让空间(XFS 文件系统)
linux·安全·centos
AOwhisky3 小时前
MySQL 学习笔记(第五期):用户管理与权限控制
linux·运维·数据库·笔记·学习·mysql
kyle~3 小时前
ROS2---零拷贝
linux·c++·机器人·ros2
无限进步_3 小时前
Linux进程创建——fork与vfork深度解析
linux·运维·服务器