• 集群分发脚本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

    在文件中编写如下代码:

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

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

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

    chmod 777 xsync

    调用脚本形式:

    xsync 文件夹名称

    如图所示,可正确运行!

  • 相关阅读:
    人类认知的贝叶斯与机器的贝叶斯
    [Python] Pathlib 使用
    快速了解常用的对称加密算法,再也不用担心面试官的刨根问底
    RocketMq5 消息消费及相关源码浅阅
    项目管理的优秀软件推荐,助力提升团队效能!
    ABAP 调用HTTP上传附件
    实现内网穿透的最佳解决方案(无实名认证,完全免费)
    行情分析——加密货币市场大盘走势(10.17)
    Centos8安装docker并配置Kali Linux图形化界面
    长尾词-长尾词软件-长尾词挖掘工具免费
  • 原文地址:https://blog.csdn.net/qq_62928039/article/details/133760256