注意: 将本地文件,同步到【/opt/module/script/xsyncByFileIp.txt】里面的目标机器
xsyncByFile.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 $xsyncByFileIpPath | 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 xsyncByFile.sh /test