本文主要是介绍Shell常用脚本:文件或目录一键同步到多台服务器,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
注意: 将本地文件,同步到【/opt/module/script/xsyncByFileIp.txt】里面的目标机器
xsyncByFile.sh
#!/bin/bash# 入参参数个数
argsCount=$#if(($argsCount==0)); thenecho "同步失败:请输入待同步的文件或者目录"
exit;
fiecho "待同步的文件:$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)); thenecho "同步失败:请在$xsyncByFileIpPath 填入需要同步到的目标机器,每行内容是一个目标机器"
exit
fiwhile read ip; doecho -e "\n\n===============$ip===============" echo "正在将文件同步到目标机器【$ip】"rsync -rvl $syncArgFileNameParentDirPath/$syncArgFileName root@$ip:$syncArgFileNameParentDirPathecho -e "文件同步到目标机器【$ip】完成"echo -e "======================================"
done < "$xsyncByFileIpPath"echo -e "\n\n同步结束\n\n"
使用示例:
sh xsyncByFile.sh /test
这篇关于Shell常用脚本:文件或目录一键同步到多台服务器的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!