zoukankan      html  css  js  c++  java
  • 《卡死你3000》批量文件复制命令详解

    卡死你3000简介:

    名词解释:

    批量顺序复制文件:从主控机,到从被控机1,被控机2,复制文件。有卡住问题。

    批量并发复制文件:从主控机,到从被控机1,被控机2,复制文件。使用多线程并发,可以控制并发数。并发复制,解决单线程卡住问题。

    卡死你3000复制文件命令:

    kct, k copy files to 被控机。
    kcf。 k copy files from 被控机。

    命令系统需求:
    上述2条命令,支持win,linux,mac,树莓派中使用;

    命令依赖卡死你3000,依赖nodelist.csv;

    被控机需要安装powershell;

    对于linux被控机,不支持密码连接,需要建立ssh-keyfile,并做免密。

    使用场景:

    用于推送安装包,推送.sh脚本,推送.py脚本。

     

    卡死你3000,主要复制文件的说明:

    1卡死你3000,支持从win复制文件到win,支持从linux复制文件到linux,支持从win,linux之间任意复制文件。还支持mac,树莓派。

    2 把文件从主控机的【自定义】目录,复制到被控机的【自定义】目录。
    『主控机(孙权)嫁妹,孙尚香.jpg,送给被控机(刘备)』
    kct #复制文件,从主控机到被控机
     
    3 把文件从被控机的【自定义】目录,复制到主控机的【自定义】目录。
    『蒋干盗书,本来是想劝降东吴。却从东吴(被控机)盗回假的投降书.jpg』
    kcf #复制文件,从被控机到主控机
     

    参数:

    [String]$LiteralPath,   #不支持 [ ] * ? 源目录
    [String]$Path,源目录
    [String]$Destination,目标目录
    [Switch]$Recurse  递归,

    问:和scp有啥不同?
    答:
    1可以限制并发任务数。用户自己根据cpu核心数,网卡io,磁盘io,调整并发数。
    2scp有个癌症,主控机,被控机都得装scp。而卡死你3000复制文件到linux被控机基于sftp,被控机不需要装scp。
     
     

    例子:

    问:如何从【主控机】到【被控机】复制文件?
    答:非并发复制
    $1组ip = '1.2.3.4','5.6.7.8'
    # $1组ip = get-content /root/ip.txt #一行一个ip
    foreach ($ip in $1组ip)
    {
     cdip $ip
     kct.ps1 -LiteralPath 'c:主控机源目录' -Destination '/tmp/被控机目标目录' -Recurse #从主控机,向被控机复制文件
    }

    问:如何从【被控机】到【主控机】批量复制文件?
    答:非并发复制
     
    $linux = 'centos7','centos8','debian8','debian9','debian10','debian11','ubuntu1404','ubuntu1604','ubuntu1804','alpine','ubuntu2004','Amazon Linux 2','kylin v10','统信UOS服务器版'
    
    $1组ip = '1.2.3.4','5.6.7.8'
    # $1组ip = get-content /root/ip.txt #一行一个ip
    foreach ($ip in $1组ip)
    {
        cdip $ip
        if ($ip.被控机os类型 -in $linux)
        {
            kcf.ps1 -LiteralPath '/tmp' -Destination 'd:主控机目标目录' -Recurse #从被控机,向主控机复制文件
        }
        else
        {
            kcf.ps1 -LiteralPath 'c:被控机源目录' -Destination 'd:主控机目标目录' -Recurse #从被控机,向主控机复制文件
        }
    }
     

    同步主控机,被控机之间的【node_script】目录:

    【node_script】目录,就是主控机《----》被控机之间的公用目录
    把文件从主控机的【node_script】目录,复制到被控机的【node_script】。
    cdip 192.168.1.2 #选中被控机
    kctf复制主控机node_script目录脚本到当前被控机.ps1

    并发复制:

    问:【主控机】,【被控机】复制文件为何是非并发?
    答:
    我没有开发并发复制文件功能,就怕1000个并发卡死主控机。
    所以复制文件,应该用下面的,类似于手动的并发复制。
    这种方法,方便写脚本的人,控制并发数量。

    问:编写脚本时,如何控制主控机并发任务数?如何控制被控机并发任务数?
    答:
    1 卡死你3000,有默认多进程并发任务数限制99。多线程不限制并发数。这2个基本不是给【单个用户任务用的】。不建议用户使用这些内容限制并发。
    2 对于用户级主控机,被控机,任务。powershell v7版本,及以上。提供这个命令。这是多线程并发。
     
    $多线程外的值_要传递到线程内 = 123
    $1组ip = '1.2.3.4','5.6.7.8'
    # $1组ip = get-content /root/ip.txt #一行一个ip
    $1组ip | ForEach-Object -ThrottleLimit 5 -TimeoutSeconds 60 -Parallel  {
     kct.ps1 -LiteralPath 'c:主控机源目录' -Destination '/tmp/被控机目标目录' -Recurse #从主控机,向被控机复制文件
    #这里调用函数,必须在这里定义。不能在外部定义。因为这是一个单独的线程。不支持执行代码块。支持调用脚本。
     $c1 = $using:多线程外的值_要传递到线程内 #变量要先克隆到线程内,再计算
    }

    并发复制,非并发复制,只有1行代码区别。
    -ThrottleLimit 5  #限制并发数
    -TimeoutSeconds 60 #超时

    复制文件命令:

    k_copyto_ip_port_winscp2bash_user_pwd.ps1 
    默认是,连同子目录一起复制
    参数:
    【ipaddress】-->【目的ip地址】
    【port】-->【端口】
    【user】-->【用户名】
    【pwd】-->【密码】
    【LiteralPath】主控机上的文件目录
    【Destination】被控机上的文件目录
     
    k_copyfrom_ip_port_winscp2bash_user_pwd.ps1
    默认是,连同子目录一起复制
    参数
    【ipaddress】-->【目的ip地址】
    【port】-->【端口】
    【user】-->【用户名】
    【pwd】-->【密码】
    【LiteralPath】被控机上的文件目录
    【Destination】主控机上的文件目录
     
    命令系统需求:
    上述命令,只限于win中使用;
    命令依赖powershell的winscp模块;
    命令不依赖卡死你3000,不依赖nodelist.csv,不需要ssh-keyfile,但需要单独输入ip,端口,账户,密码。
    被控机不需要安装powershell。
     

    复制文件命令:

    k_copyfrom_ip_port_w2l_user_expect_pwd.ps1
    k_copyto_ip_port_w2l_user_expect_pwd.ps1 

    命令系统需求:
    从win到linux自动输入密码;
    支持sudo提权;

    被控机需要安装powershell

    不需要ssh-keyfile 

    复制文件命令:

    k_copyto_ip_port_l2l_user.ps1
    k_copyto_ip_port_w2l_user.ps1
    k_copyto_ip_port_w2w_user_pwd.ps1
    k_copyfrom_ip_port_l2l_user.ps1
    k_copyfrom_ip_port_w2l_user.ps1
    k_copyfrom_ip_port_w2w_user_pwd.ps1

    命令系统需求:

    不需要ssh-keyfile

    主控机使用上述命令,不依赖卡死你3000,不依赖nodelist.csv,但需要单独输入密码;
    不带有pwd的,会提示输入密码。带有pwd的,支持参数输入密码;

    被控机需要安装powershell;

  • 相关阅读:
    git 撤销更改的文件
    git基于某个分支创建分支
    nodejs 支付宝app支付
    windows提交代码到git仓库
    MongoError: Cannot update '__v' and '__v' at the same time,错误解决办法
    作业3.输入一个年份,判断是闰年还是平年
    作业2.判断一元二次方向根的情况
    求3个数中的最大数
    语句
    运算符
  • 原文地址:https://www.cnblogs.com/piapia/p/14241518.html
Copyright © 2011-2022 走看看