集群环境中分发文件的脚本

由于在集群中手动分发文件较为麻烦,这里记录一下自动分发脚本。

1 脚本说明

该脚本用于将文件分发到远程设备。默认分发文件的路径为脚本所在路径,默认分发目标地址为node1node2。可以在启动脚本时手动输入分发文件的路径和目标设备地址,并可以选择使用 scp 或 rsync 进行文件传输。如果目标设备不存在相同地址会自动创建。

2 脚本代码

可以根据实际情况修改默认参数。

#!/bin/bash# 默认参数
DEFAULT_PATH=$(pwd)
DEFAULT_TARGETS=("node1" "node2")
DEFAULT_METHOD="rsync"# 函数:检查是否安装了指定的命令
check_command() {command -v "$1" >/dev/null 2>&1 || {echo "Error: $1 is not installed. Please install it and try again."exit 1}
}# 检查所需的命令
check_command "scp"
check_command "rsync"# 函数:将相对路径转换为绝对路径
get_absolute_path() {local path="$1"echo "$(cd "$path" && pwd)"
}# 函数:显示用法信息
usage() {echo "Usage: $0 [-p <path>] [-t <target1,target2,...>] [-m <scp|rsync>]"exit 1
}# 解析输入参数
while getopts "p:t:m:" opt; docase "$opt" inp) FILE_PATH=$OPTARG ;;t) IFS=',' read -r -a TARGETS <<< "$OPTARG" ;;m) METHOD=$OPTARG ;;*) usage ;;esac
done# 设置默认值
FILE_PATH=${FILE_PATH:-$DEFAULT_PATH}
FILE_PATH=$(get_absolute_path "$FILE_PATH")
METHOD=${METHOD:-$DEFAULT_METHOD}
if [ -z "${TARGETS+x}" ]; thenTARGETS=("${DEFAULT_TARGETS[@]}")
fi# 检查方法是否有效
if [[ "$METHOD" != "scp" && "$METHOD" != "rsync" ]]; thenecho "Error: Method must be either 'scp' or 'rsync'."usage
fi# 函数:创建远程目录
create_remote_dir() {local target=$1ssh "$target" "mkdir -p $FILE_PATH"
}# 函数:使用SCP分发文件,显示进度条
distribute_scp() {local target=$1scp -r "$FILE_PATH"/* "$target:$FILE_PATH"
}# 函数:使用Rsync分发文件,显示进度条
distribute_rsync() {local target=$1rsync -avz --progress "$FILE_PATH"/* "$target:$FILE_PATH"
}echo "Source Path: $FILE_PATH"
# 分发文件
for target in "${TARGETS[@]}"; doecho "Target Path: $target:$FILE_PATH"# 检查并创建远程目录create_remote_dir "$target"# 分发文件if [[ "$METHOD" == "scp" ]]; thendistribute_scp "$target"elsedistribute_rsync "$target"fiecho "Files distributed to $target using $METHOD."
doneecho "File distribution completed."

3 使用说明

3.1 基本用法

./distribute_files.sh

3.2 选项说明

  • -p <path>:指定分发文件的路径,默认为脚本所在路径。
  • -t <target1,target2,...>:指定分发目标地址,默认为node1node2。多个地址使用逗号分隔,且不要加空格。
  • -m <scp|rsync>:选择使用scprsync进行文件传输,默认为scp。建议首次传输使用scp,之后的传输使用rsync

3.3 示例用法

  1. 使用默认参数执行脚本

    ./distribute_files.sh
    

    分发脚本所在路径的文件到node1node2,使用 rsync 进行传输。

  2. 指定分发路径和目标地址

    ./distribute_files.sh -p /path/to/files -t node1,node2,node3
    

    分发/path/to/files路径下的文件到node1node2node3,使用 rsync 进行传输。

  3. 指定使用 scp 进行分发

    ./distribute_files.sh -m scp
    

    分发脚本所在路径的文件到node1node2,使用 scp 进行传输。

4 注意事项

  1. 确保目标设备已经配置了 SSH 访问权限,并且本地设备能够通过 SSH 连接到目标设备。
  2. 分发文件路径和目标地址需要用户有相应的读写权限。
  3. 在首次使用时,请先测试连接是否正常,以避免大规模文件分发失败。
  4. 请确保本地和远程设备上可以使用必要的命令(scprsync)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/34145.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

教育护眼灯品牌排行有哪些上榜?中国十大教育照明品牌分享

在当前的时代背景下&#xff0c;孩子们的课业负担依然沉重。随着他们年龄的增长&#xff0c;作业量不断增加&#xff0c;对视力的需求也随之上升。加之&#xff0c;现今许多作业需借助电子屏幕完成&#xff0c;孩子们面临视力问题的风险因而愈加提早。家长们逐渐认识到&#xf…

一个端口配置两个vue和后端服务,nginx以及前后端服务怎么配?

nginx配置重点看server中的内容&#xff1a; worker_processes 8; pid /usr/local/nginx/logs/nginx.pid;events {# 此为 Linux 系统特为处理大批量文件描述符而作改进的 poll 事件模型use epoll;worker_connections 512; # 工作进程的最大连接数量# 允许同时接受多个网络连…

注意,华为HCIP考试近期变题频繁,请密切关注

最近&#xff0c;华为HCIP考试频繁变题&#xff0c;不少人在后台咨询小编&#xff0c;在此统一回复下。 具体情况是&#xff0c;继HCIP Datacom H12-831在4月份变题后&#xff0c;上周HCIP-Security H12-725也发生了变题。 而本周&#xff0c;HCIP-WLAN H12-323再次变题。 01 变…

静态文件及模板

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 1 静态文件 动态Web应用也会需要静态文件&#xff0c;通常是CSS和JavaScript文件。Flask可以向已经配置好的Web服务器提供静态文件&#xff0c;只要…

制作微信小程序“飞翔的小鸟”

微信小程序为开发者提供了一个强大的平台&#xff0c;可以快速创建各种有趣的应用。在这篇博客中&#xff0c;我们将介绍如何制作一个简单的微信小程序——“飞翔的小鸟”。 项目介绍 “飞翔的小鸟”是一款基于微信小程序的小游戏&#xff0c;玩家需要控制一只小鸟在障碍物之间…

目前什么牌子充电宝适合入手?性价比高充电宝推荐

在如今这个快节奏的时代&#xff0c;手机已经成为我们生活中不可或缺的一部分。然而&#xff0c;手机电量的消耗却常常让我们陷入焦虑之中。当我们身处户外&#xff0c;急需给手机充电时&#xff0c;共享充电宝或许是个应急的选择&#xff0c;但您是否注意到&#xff0c;共享充…

监控系统的4个黄金指标

最近被问到一个问题&#xff0c;是关于监控系统的4个黄金信号&#xff08;也被称为黄金指标&#xff09;的&#xff0c;不太记得了&#xff0c;看了一些资料&#xff0c;做个笔记。 来源 监控系统的4个黄金指标来源于《SRE&#xff1a;Google运维解密》这本书的第六章 分布式…

面试题3:GET 和 POST 有什么区别?

[!]高频面试题。 GET 和 POST 没有本质区别&#xff0c;可以进行相互代替。 1、GET语义&#xff1a;“从服务器获取数据”&#xff1b;POST语义&#xff1a;“往服务器上提交数据”。[设计初衷&#xff0c;不一定要遵守] 2、发请求时&#xff0c;给服务器传递的数据&#xff…

通用大模型VS垂直大模型:你更青睐哪一方?

目录 引言 背景介绍 国内外垂直大模型的发展情况 国内外通用大模型的发展情况 哪一路径更为火热&#xff1f; 能力分析 通用大模型的独特能力 垂直大模型的独特能力 两者的差异与互补 难点探究 算力的挑战 数据的挑战 算法的挑战 结论 表格总结 引言 AI大模型的战…

CMake 详解

CMake 说明 cmake的定义是什么 &#xff1f;-----高级编译配置工具 当多个人用不同的语言或者编译器开发一个项目&#xff0c;最终要输出一个可执行文件或者共享库&#xff08;dll&#xff0c;so等等&#xff09;这时候神器就出现了-----CMake&#xff01; 所有操作都是通过…

Qt封装号的数据库操作类

连接QMYSQL&#xff0c;包含断线重连 头文件&#xff08;xxx.h&#xff09; #ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow> #include <QThread.h> #include <QQueue> #include <QMutex> #include <QSqlDatabase> #include …

用一个实例看如何分享大量照片 续篇一

继续上篇的实例分享&#xff0c;在此罗列一些应该注意的细节&#xff0c;以便在下次可以更加省时省力。 最重要的是呈现构想&#xff0c;如按活动/主题、班级/板块、地区/国家等等&#xff0c;这些都应该事先计划好&#xff0c;事后改动工作量巨大&#xff0c;因为太容易出错&a…

中东文明史

转自&#xff1a;想要了解完整的中东文明史&#xff1f;这篇文章成全你 - 知乎 (zhihu.com) 写在前面 中东文明是人类历史上最古老的文明。人类祖先从东非大裂谷走出之后&#xff0c;首先选择定居在中东地区的新月沃土上&#xff0c;并建立了人类历史上有文字记载的第一个文明…

java课程设计GUI学生信息管理系统

目录 系统内容.. 3 用户界面模块... 4 数据存储模块... 4 信息管理模块... 4 管理模块.. 4 主要模块的算法描述... 4 –简要的语言描述... 4 运行及调试分析&#xff08;测试数据及测试结果&#xff09;.. 5 课程设计总结... 7 参考文献&#xff08;至少三个&#xf…

大林 PID 算法

Dahlin PID算法是一种用于控制和调节系统的比例积分延迟算法。以下是一个简单的C语言实现示例&#xff1a; #include <stdio.h>// DALIN PID 结构体定义 typedef struct {float SetPoint; // 设定点float Proportion; // 比例float Integral; // 积分float Derivativ…

vite:配置打包后js的文件名,解决更新后浏览器缓存问题(了解浏览器的强缓存与协商缓存)

目录 第一章 简单理解浏览器的缓存机制 1.1 什么是缓存 1.2 强缓存 1.3 协商缓存 第二章 配置输出js文件名 2.1 原因 2.2 配置代码 第一章 简单理解浏览器的缓存机制 1.1 什么是缓存 当我们第一次访问网站的时候&#xff0c;我们的电脑会把网站上的图片和数据下载到电…

如何优雅地使用 console.log 打印数组或对象

一、背景 使用 console.log 在控制台中打印数组或者对象时&#xff0c;很多时候它们的字段都是默认关闭的&#xff0c;需要手动一个个的点开&#xff0c;非常不直观且麻烦。 二、解决方案 使用 JSON.stringify() 的第三个参数 我们来看一下官方对于 JSON.stringify 的介绍 三、…

Gitee 的公钥删不掉

公钥管理里已经没有公钥了&#xff0c; 仓库里还有&#xff0c;这是怎么回事&#xff1f; 这两个好像又没什么关系。 那为啥要搞两处呢&#xff1f; 个人信息里的公钥一直就没有仓库里使用的公钥&#xff0c; 删掉个人信息里的也没什么影响。 在仓库管理页面导入新公钥提示已…

AI 大模型企业应用实战(06)-初识LangChain

LLM大模型与AI应用的粘合剂。 1 langchain是什么以及发展过程 LangChain是一个开源框架&#xff0c;旨在简化使用大型语言模型构建端到端应用程序的过程&#xff0c;也是ReAct(reasonact)论文的落地实现。 2022年10月25日开源 54K star 种子轮一周1000万美金&#xff0c;A轮2…

解决vscode运行js时突然报错

1. 问题背景 创建JavaScript文件运行&#xff0c;弹出错误&#xff1a;Can’t find Node.js binary “node”: path does not exist. Make sure Node.js is installed and in your PATH, or set the “runtimeExecutable” in your launch.json 这是由于没有配置好setting.js…