Centos集群同步文件脚本xsync

news/2025/1/15 6:48:45/

第一次使用需要安装rsync

yum -y install rsync

创建执行文件

vi /usr/local/bin/xsync

执行权限

chmod a+x /usr/local/bin/xsync

#!/bin/bash# 获取输出参数,如果没有参数则直接返回
pcount=$#
if [ $pcount -eq 0 ]
thenecho "no parameter find !";exit;
fi# 获取传输文件名
p1=$1
filename=`basename $p1`
echo "load file $p1 success !"# 获取文件的绝对路径
pdir=`cd -P $(dirname $p1); pwd`
echo "file path is $pdir"# 获取当前用户(如果想使用root用户权限拷贝文件,在命令后加入-root参数即可)
user=$2
case "$user" in
"-root")user="root";;
"")user=`whoami`;;
*)echo "illegal parameter $user"esacecho $user
# 拷贝文件到从机(这里注意主机的host需要根据你的实际情况配置,要与你具体的主机名对应)
for (( host=2;host<=5;host++ ))
do echo "================current host is bigdata0$host================="# -p 保持文件原有权限# -g 保持文件原有用户组# -o 保持文件原有属主rsync -rvlpgo $pdir/$filename $user@bigdata0$host:$pdir
doneecho "complate !"
#!/bin/bash# 显示帮助信息
show_help() {echo "Usage: $0 [-i <host1> <host2> ... | -f <file> | -h] <command>"echo "  -i <host1> <host2> ...   Specify a list of hosts to execute the command on."echo "  -f <file>               Specify a file containing a list of hosts, one per line."echo "  -h                      Show this help message."echo "  <command>                The command to execute on the remote hosts."echo ""echo "Examples:"echo "  $0 /path/file"echo "  $0 -i \"bigdata01 bigdata02\" /path/file"echo "  $0 -f hosts.txt /path/file"
}# 默认主机列表
default_hosts=("bigdata01" "bigdata02" "bigdata03" "bigdata04" "bigdata05")# 读取主机列表,如果没有指定 -i 或 -f,则使用默认值
hosts=("${default_hosts[@]}")# 解析参数
while getopts "f:i:h" opt; docase $opt inf)# 如果提供了 -f 参数,则读取文件中的主机列表hosts_file="$OPTARG"if [ ! -f "$hosts_file" ]; thenecho "Error: File not found - $hosts_file"exit 1fimapfile -t hosts < "$hosts_file";;i)# 如果提供了 -i 参数,则将后面的参数作为主机列表hosts=()IFS=' ' read -ra hosts <<< "$OPTARG";;h)show_helpexit 0;;\?)echo "Invalid option: -$OPTARG" >&2exit 1;;:)echo "Option -$OPTARG requires an argument." >&2exit 1;;esac
done# 移除解析过的参数,留下命令
shift $((OPTIND -1))
if [ $# -eq 0 ]; thenecho "No command provided."show_helpexit 1
fi# 获取传输文件名
p1=$1
filename=`basename $p1`
echo "load file $p1 success !"# 获取文件的绝对路径
pdir=`cd -P $(dirname $p1); pwd`
echo "file path is $pdir"# 获取当前用户(如果想使用root用户权限拷贝文件,在命令后加入-root参数即可)
user=$(whoami)
echo "User: $user"# 拷贝文件到从机(这里注意主机的host需要根据你的实际情况配置,要与你具体的主机名对应)
for host in "${hosts[@]}";
do # 拷贝文件到从机,跳过当前主机if [ "$host" == "$(hostname)" ] || [ "$host" == "$(hostname -I | awk '{print $1}')" ];  thenecho "Skipping current host: $(hostname)"continuefiecho "================current host is $host================="# SSH到目标主机并检查目录是否存在,如果不存在则创建ssh $user@$host "mkdir -p '$pdir'"# -p 保持文件原有权限# -g 保持文件原有用户组# -o 保持文件原有属主rsync -rvlpgo $pdir/$filename $user@$host:$pdir
doneecho "complate !"

http://www.ppmy.cn/news/1562900.html

相关文章

宝塔面板 php8.0 安装 fileinfo 拓展失败

系统&#xff1a;Albaba Cloud Linux release 3 &#xff08;OpenAnolis Editon&#xff09;即 Centos 平替 异常提示&#xff1a; cc: fatal error: ** signal terminated program cc1 compilation terminated. make: *** [Makefile:211: libmagic/apprentice.lo] Error 1搜…

C# 使用iText 编辑PDF

NetCore 创建、编辑PDF插入表格、图片、文字 NetCore 创建、编辑PDF插入表格、图片、文字(二) NetCore 创建、编辑PDF插入表格、图片、文字(三) 1&#xff0c;.net8 环境&#xff0c;引入 包 itext7 itext7.bouncy-castle-adapter 2,直接上代码 public class PDFEditor{public…

MySQL 16 章——变量、流程控制和游标

一、变量 在MySQL数据库的存储过程和存储函数中&#xff0c;可以使用变量来存储查询或计算的中间结果数据&#xff0c;或者输出最终的结果数据 在MySQL数据库中&#xff0c;变量分为系统变量和用户自定义变量 &#xff08;1&#xff09;系统变量 1.1.1系统变量分类 变量由…

同域名前后端分离项目 nginx配置实践

新项目采用前后端分离的方式开发&#xff0c;前后端代码打算分开部署&#xff08;同机器且同域名&#xff09;&#xff0c;但打算支持后端依然可访问静态资源&#xff08;nginx配置仅一份&#xff09;。 搜索nginx配置大部分都通过url前缀进行转发来做前后端分离&#xff0c;不…

Web开发中页面出现乱码的解决(Java Web学习笔记:需在编译时用 -encoding utf-8)

目录 1 引言2 乱码表现、原因分析及解决2.1 乱码表现2.2 原因分析2.3 解决 3 总结 1 引言 Web开发的页面出现了乱码&#xff0c;一直不愿写出来&#xff0c;因为网上的解决方案太多了。但本文的所说的页面乱码问题&#xff0c;则是与网上的大多数解决方案不一样&#xff0c;使…

《框架程序设计》复习题解析-2

目录 简答题 1.在MyBatis框架中&#xff0c;当查询结果列名和实体类中的属性名不一致时如何配置实现自定义映射关系&#xff0c;请详细说明。 2.请描述在SQL映射文件中&#xff0c;如何自定义合适的实体类与查询结果完成映射&#xff1f; 3.Spring整合MyBatis时&#xff0c;…

【WRF运行报错】总结WRF运行时报错及解决方案(持续更新)

目录 ./real.exe错误1:ERROR while reading namelist physics./wrf.exe错误1:FATAL CALLED FROM FILE: <stdin> LINE: 2419 Warning: too many input landuse types参考./real.exe 错误1:ERROR while reading namelist physics 执行./real.exe时,报错如下: taski…

计算机网络 —— 网络编程(TCP)

计算机网络 —— 网络编程&#xff08;TCP&#xff09; TCP和UDP的区别TCP (Transmission Control Protocol)UDP (User Datagram Protocol) 前期准备listen &#xff08;服务端&#xff09;函数原型返回值使用示例注意事项 accpect &#xff08;服务端&#xff09;函数原型返回…