集群分发脚本xysnc

一、scp(secure copy) 安全拷贝

1.定义

`scp`(Secure Copy)是一个用于在不同计算机之间安全地复制文件和目录的命令行工具。它使用 SSH 协议进行连接和文件传输,提供了加密和身份验证机制,确保数据传输的安全性。

2.基本语法

scp [options] source destination

其中,`source` 是要复制的源文件或目录的路径,`destination` 是目标文件或目录的路径。

`scp` 命令的常用选项包括:

- `-r`:递归复制目录及其内容。
- `-p`:保留源文件的权限。
- `-v`:显示详细的输出,可以查看复制过程中的进度和详细信息。
- `-i`:指定用于身份验证的私钥文件。
- `-P`:指定远程 SSH 服务器的端口号。

3.实例

① 将本地文件复制到远程服务器:

scp /path/to/local/file user@remote-server:/path/to/destination

上述命令将本地的 `/path/to/local/file` 文件复制到远程服务器的 `/path/to/destination` 目录中。

② 将远程文件复制到本地:

scp user@remote-server:/path/to/remote/file /path/to/destination

上述命令将远程服务器上的 `/path/to/remote/file` 文件复制到本地的 `/path/to/destination` 目录中。

③ 递归复制目录及其内容:

scp -r /path/to/local/directory user@remote-server:/path/to/destination

上述命令将本地的 `/path/to/local/directory` 目录及其内容递归地复制到远程服务器的 `/path/to/destination` 目录中。

④ 从远程服务器复制文件到本地,并指定端口号:

scp -P 2222 user@remote-server:/path/to/remote/file /path/to/destination

上述命令将远程服务器上的 `/path/to/remote/file` 文件复制到本地的 `/path/to/destination` 目录中,并指定远程服务器的端口号为 2222。

注:`scp` 命令需要在本地计算机和远程服务器之间建立 SSH 连接,并且需要提供适当的身份验证凭据(如用户名和密码或私钥文件)。

二、rsync远程同步工具

1.定义

`rsync` 是一个功能强大的文件复制和同步工具,可以在本地和远程之间进行文件同步。与 `scp` 不同,`rsync` 可以根据文件的差异进行增量复制,只传输发生变化的部分,从而提高效率和节省带宽。

2.基本语法

rsync [options] source destination

其中,`source` 是要复制的源文件或目录的路径,`destination` 是目标文件或目录的路径。`source` 和 `destination` 可以是本地路径,也可以是远程路径(使用 `rsync` 的远程协议)。

`rsync` 命令的常用选项包括:

- `-a`:以归档模式进行复制,保留文件的所有属性(权限、所有者等)。
- `-r`:递归复制目录及其内容。
- `-v`:显示详细的输出,可以查看复制过程中的进度和详细信息。
- `-z`:在传输过程中启用压缩,减少数据传输量。
- `-P`:显示进度信息,同时保留部分复制的文件。
- `-e`:指定远程 shell 的命令。
- `--delete`:在目标上删除源中不存在的文件。

3.实例

① 本地文件复制:

rsync /path/to/local/file /path/to/destination

上述命令将本地的 `/path/to/local/file` 文件复制到本地的 `/path/to/destination` 目录中。

② 本地目录复制:

rsync -a /path/to/local/directory /path/to/destination

上述命令将本地的 `/path/to/local/directory` 目录及其内容复制到本地的 `/path/to/destination` 目录中。

③ 从远程服务器复制文件到本地:

rsync -avz user@remote-server:/path/to/remote/file /path/to/destination

上述命令将远程服务器上的 `/path/to/remote/file` 文件复制到本地的 `/path/to/destination` 目录中,并使用压缩进行传输。

④ 从本地复制文件到远程服务器:

rsync -avz /path/to/local/file user@remote-server:/path/to/destination

上述命令将本地的 `/path/to/local/file` 文件复制到远程服务器的 `/path/to/destination` 目录中,并使用压缩进行传输。

⑤ 远程同步两个目录:

rsync -avz user@remote-server:/path/to/source /path/to/destination

上述命令将远程服务器上的 `/path/to/source` 目录及其内容与本地的 `/path/to/destination` 目录进行同步,并使用压缩进行传输。

注:`rsync` 命令需要在本地计算机和远程服务器之间建立连接,并且需要提供适当的身份验证凭据(如用户名和密码或私钥文件)。另外,确保在使用 `rsync` 命令时,您具有足够的权限来访问源文件和目标位置。

三、xsync集群分发脚本

1.需求

循环复制文件到所有节点的相同目录下

2.需求分析

(a)rsync命令原始拷贝:

rsync  -rvl     /opt/module      root@hadoop01:/opt/

(b)期望脚本:

        xsync要同步的文件名称

c)说明:在/home/hadoop/bin这个目录下存放的脚本,hadoop用户可以在系统任何地方直接执行。

3.脚本实现

在/home/Hadoop这个目录下创建bin目录,并在bin目录下xsync创建文件。

要找到您当前登录用户的目录,可以使用以下命令:

echo $HOME

该命令会打印出您当前登录用户的主目录路径。在Linux系统中,每个用户都有一个主目录,通常位于 `/home` 目录下,以用户名命名。

另外,您还可以使用以下命令来查看当前所在的目录:

pwd

该命令会显示当前工作目录的路径,即您当前所在的目录。

命令如下:

[hadoop@Hadoop01 ~]$ mkdir bin
[hadoop@Hadoop01 ~]$ cd bin
[hadoop@Hadoop01 bin]$ touch xsync

在文件中编写如下代码:

#!/bin/bash
#1 获取输入参数个数,如果没有参数,直接退出
pcount=$#
if ((pcount==0)); then
echo no args;
exit;
fi#2 获取文件名称
p1=$1
fname=`basename $p1`
echo fname=$fname#3 获取上级目录到绝对路径
pdir=`cd -P $(dirname $p1); pwd`
echo pdir=$pdir#4 获取当前用户名称
user=`whoami`#5 循环
for((host=02; host<04; host++)); doecho ------------------- hadoop$host --------------rsync -av $pdir/$fname $user@hadoop$host:$pdir
done

注:如果你的主机名和我一样是01,02,03,把代码文件路径中的adoop改成Hadoop0(由于脚本中的循环计数变量 host 在输出时被解释为整数而不是字符串,所以会被解析为hadoo2和hadoop3)。

 接着修改脚本 xsync 具有执行权限:

chmod 777 xsync

调用脚本形式:

xsync 文件夹名称

如图所示,可正确运行!

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

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

相关文章

Excel 规范录入数据

文章目录 录入日期录入百分比 快捷键&#xff1a; tab&#xff1a;向右切换单元格 enter&#xff1a;向下切换行 shift tab&#xff1a;向左切换单元格 shiftenter&#xff1a;向上切换行 录入日期 输入今天的日期的快捷键&#xff1a;Ctrl ; 输入当时的时间的快捷键&a…

【QT5-程序控制电源-[GPIB-USB-HS]-SCPI协议-上位机-基础样例【2】】

【QT5-程序控制电源-[GPIB-USB-HS]-SCPI协议-上位机-基础样例【2】】 1、前言2、实验环境3、自我总结1、基础了解仪器控制-熟悉仪器2、连接SCPI协议3、了解GPIB-USB-HS4、软件调试-代码编写 4、熟悉协议-SCPI协议5、实验过程-熟悉软件&#xff08;1&#xff09;去官网NI&#x…

【踩坑】hive脚本笛卡尔积严重降低查询效率问题

前一阵子查看我们公司的大数据平台的离线脚本运行情况, 结果发现有一个任务居然跑了一天多, 要知道这还只是几千万量级的表, 且这个任务是每天需要执行的 于是我把hive脚本捞出来看了下, 发现无非多join了几个复杂的子查询, 应该不至于这么久, 包括我又检查了是不是没有加上每…

使用 KubeSkoop exporter 监测和定位容器网络抖动问题

作者&#xff1a;遐宇、溪恒 本文是 8 月 17 日直播的文字稿整理&#xff0c;文末可观看直播回放。除去文章内容外&#xff0c;还包括针对实际网络问题的实战环节。 容器网络抖动问题发生频率低&#xff0c;时间短&#xff0c;是网络问题中最难定位和解决的问题之一。 不仅如…

项目文件上传到行云codeup teambition

接手公司好几年的老项目&#xff0c;在行云上已经有1.9G的大小所以被限制上传了 只有花钱扩容或者重新建库。 1.重新建库&#xff1a;登录你的行云账户在代码库中新建代码库&#xff08;网上有详细的&#xff09; 创建成功后的库中只有readme文件。 2.复制代码库的下载地址 …

【计算机网络-自顶向下方法】应用层(SMTP、POP3、DNS)

目录 1. Electronic Mail电子邮件应用画像1.1 电子邮件系统1.2 邮件报文格式1.3 邮件访问 2. DNS&#xff08;Domain Name System&#xff09;2.1 DNS提供的服务2.2 DNS工作机理2.3 DNS资源记录2.4 DNS协议&#xff0c;报文2.5 小结 1. Electronic Mail 电子邮件应用画像 应用…

jmeter 请求发送加密参数

最近在做http加密接口&#xff0c;请求头的uid参数及body的请求json参数都经过加密再发送请求&#xff0c;加密方式为&#xff1a;ase256。所以&#xff0c;jmeter发送请求前也需要对uid及json参数进行加密。我这里是让开发写了个加密、解密的jar&#xff0c;jmeter直接调用这个…

React的类式组件和函数式组件之间有什么区别?

React 中的类组件和函数组件是两种不同的组件编写方式&#xff0c;它们之间有一些区别。 语法和写法&#xff1a;类组件是使用类的语法进行定义的&#xff0c;它继承自 React.Component 类&#xff0c;并且需要实现 render() 方法来返回组件的 JSX。函数组件是使用函数的语法进…

Godot 添加Nuget 引用

前言 我的Godot 专栏 我在之前的文章中&#xff0c;解决了Visual Studio 如何去调试正在运行的Godot 程序。Godot 对于C# 的支持只剩下一个&#xff0c;那就是Nuget 添加。 Godot VisualStudio外部编辑器设置 添加Nuget Nuget 添加还是非常的容易的。我们直接添加一个最常用的…

怎么通过Fiddler对APP进行抓包?以及高级应用场景分析

前言 我们经常需要用到Fiddler做代理服务器对Web、APP应用进行抓包&#xff0c;以便我们对接口功能进行测试调试&#xff0c;定位问题等。这篇将讲述怎么通过Fiddler对APP进行抓包&#xff0c;以及简单介绍一些高级应用场景。 首先&#xff0c;附上Fiddler使用的环境配置清单…

实验1机器学习之线性回归实验

一、实验目的&#xff1a; &#xff08;1&#xff09;理解一元线性回归和多元线性回归的数学原理&#xff0c;能够利用sklearn中相关库解决现实世界中的各类回归问题&#xff1b; &#xff08;2&#xff09;掌握利用matplotlib对一元线性回归模型进行可视化的方法&#xff0c…

Vuex的简介以及入门案例

&#x1f3c5;我是默&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; &#x1f31f;在这里&#xff0c;我要推荐给大家我的专栏《Vue》。&#x1f3af;&#x1f3af; &#x1f680;无论你是编程小白&#xff0c;还是有一定基础的程序员&#xff0c;这个专栏…