zoukankan      html  css  js  c++  java
  • 远程操控批量复制应用(scp/pssh/pscp.pssh/rsync/pslurp)

    scp命令:

    scp [options] SRC... DEST/
    两种方式:

    • scp [options] [user@]host:/sourcefile /destpath
    • scp [options] /sourcefile [user@]host:/destpath
    常用选项:
    -C 压缩数据流
    -r 递归复制
    -p 保持原文件的属性信息
    -q 静默模式
    -P PORT 指明remote host的监听的端口

    示例一:

    scp root@192.168.34.100:/data/f1  /data/    从192.168.34.100机器的/data/目录下复制f1文件到本地/data/目录下。
    scp  /data/f1  192.168.34.100:/data/             将本地data下的文件复制到100的data目录下。

    示例二:

    也可以在基于key验证后,不需要输入口令,直接从本地远程机器一将文件复制到远程机器二上去:

    scp 192.168.34.100:/data/f1  192.168.34.101:/data/ 
    将192.168.34.100的data下的f1文件复制到远程机器data下,实现远程操作两个机器。

    示例三:

    scp -r  /data/bak/ 192.168.34.100:/data/                 将data下bak目录以下的所有文件复制到100IP的data下
    scp -r  192.168.34.100:/data/bak  192.168.34.200:/data/             将IP100的data下bak目录复制到200IP的data下,实现远程操作两个机器功能rsync命令:

    rsync命令:

    (1)是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件。

    (2)rsync使用所谓的“rsync算法”来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快。

    (3)rsync是一个功能非常强大的工具,其命令也有很多功能特色选项,我们下面就对它的选项一一进行分析说明。

    (4)基于ssh和rsh服务实现高效率的远程系统之间复制文件

     使用安全的shell连接做为传输方式

    rsync -av /etc  server1:/tmp    因为/etc后面没有/,就会复制目录和目录下文件
    rsync -av /etc/ server1:/tmp    因为/etc/后面有/,只复制目录下文件

     比scp更快,只复制不同的文件

     常用选项:

    -n 模拟复制过程
    
    -v 显示详细过程
    
    -r 递归复制目录树
    
    -p 保留权限
    
    -t 保留时间戳
    
    -g 保留组信息
    
    -o 保留所有者信息
    
    -l 将软链接文件本身进行复制(默认)
    
    -L 将软链接文件指向的文件复制
    
    -a 存档,相当于–rlptgoD,但不保留ACL(-A)和SELinux属性(-X)

    rsync和scp复制类似,但是rsync复制的更快,后缀不加/,就会复制不同文件的目录,复制效率更高。

    示例:

    rsync  192.168.34.100:/data/test /data/    将192.168.34.100的/data/test目录文件都复制到本地/data/下,注意test后面没有/代表复制了整个目录
    rsync  192.168.34.100:/data/test/ /data/   如果带了/只是将test下面的文件复制到本地data目录下,不包含test目录文件名。

    pssh工具

    pssh是一个python编写可以在多台服务器上执行命令的工具,也可实现文件复制

    选项如下:

    --version:查看版本
    
    -h:主机文件列表,内容格式”[user@]host[:port]”
    
    -H:主机字符串,内容格式”[user@]host[:port]”
    
    -A:手动输入密码模式
    
    -i:每个服务器内部处理信息输出
    
    -l:登录使用的用户名
    
    -p:并发的线程数【可选】
    
    -o:输出的文件目录【可选】
    
    -e:错误输入文件【可选】
    
    -t:TIMEOUT 超时时间设置,0无限制【可选】
    
    -O:SSH的选项
    
    -P:打印出服务器返回信息
    
    -v:详细模式

    安装pssh包: 

    yum install pssh

     示例:

     在远程连接多个主机操作时,需要实现key验证功能,不需要密码就会直接执行当前的操作。

    pssh -H "192.168.34.100 192.168.34.200" -A -i ifconfig eth0   远程连接两个IP主机并手动输入密码将IP地址打印出来,如果不输入-A就会基于KEY验证,不需要输入密码。
    pssh -h iplist.txt   -i ifconfig eh0     也支持输出文件的格式进行远程连接。 
    [root@centos7.ssh]#pssh -H "192.168.34.100 192.168.34.200" -A -i rm -rf /data/*  对远程主机执行删除命令,命令有-A,需要输入口令远程操作删除文件。
    Warning: do not enter your password if anyone else has superuser
    privileges or access to your account.
    Password: 
    [1] 19:02:10 [SUCCESS] 192.168.34.100
    [2] 19:02:10 [SUCCESS] 192.168.34.200

    也可以将IP地址写入iplist.txt文件中,直接调用文件加-h批量远程操作:

     cat iplist.txt
           192.168.34.100
           192.168.34.200
           192.168.34.101
    1)pssh -h iplist.txt -i useradd nginx     远程连接IP多个地址批量创建账号
    2)pssh -h iplist.txt -i 'rm -rf /data/*'  远程删除指定的多个IP地址data目录下的文件,注意加上单引号,加上双引号只会识别本地内容,不加则无法识别。
    3)pssh -h iplist.txt -i '$HOSTNAME'
    4)pssh -H 192.168.1.10 -o /app -e /app -i “hostname” 将标准错误和标准正确重定向都保存至/app目录下

    pscp.pssh命令

    pscp.pssh功能是将本地文件批量复制到远程主机

    pscp [-vAr] [-h hosts_file] [-H [user@]host[:port]] [-l user] [-p par] [-o

    outdir] [-e errdir] [-t timeout] [-O options] [-x args] [-X arg] local remote

    pscp.pssh选项

    -v 显示复制过程
    
    -r 递归复制目录

    示例:

    pscp.pssh  -h /root/iplist.txt  /data/f1.sh  /data/  将本地data下的f1.sh文件复制到其他(iplist为远程主机的IP地址)data下。
    pscp.pssh -H 192.168.1.10 /root/test/  /data/    将本地的test文件复制到远程192.168.1.10主机下的data下。 
    pscp.pssh -H 192.168.1.10 /root/f1.sh /root/f2.sh /data/  将本地的root下多个文件复制到192.168.1.10主机data下。
    pscp.pssh -H 192.168.1.10 -r /root/test/ /data/    将本地的目录复制到192.168.1.10主机的data下。

    pslurp命令

    pslurp功能是将远程主机的文件批量复制到本地

    pslurp [-vAr] [-h hosts_file] [-H [user@]host[:port]] [-l user] [-p par]

    [-o outdir] [-e errdir] [-t timeout] [-O options] [-x args] [-X arg] [-L localdir] remote local(本地名)

    pslurp选项

    -L 指定从远程主机下载到本机的存储的目录,local是下载到本地后的名称
    
    -r 递归复制目录

    示例:

    pslurp -H 192.168.1.10 -L /data/ /etc/passwd user  批量下载目标服务器的passwd文件至/data下,并更名为user
    pslurp  -h /root/iplist.txt -L /data/ /data/f1   f1.bak    iplist.txt里边有远程主机的IP地址,然后将远程主机的/data/f1文件复制到本机的/data/下取名叫f1.bak 

     

  • 相关阅读:
    maven 的 oracle的Missing artifact com.oracle:******:jar:11.2.0.2.0
    [CF 191C]Fools and Roads[LCA Tarjan算法][LCA 与 RMQ问题的转化][LCA ST算法]
    公司估值(贴现现金流量法DCF)
    Shell编程学习---第五篇:Shell的输入和输出
    S3C2410 实验三——块拷贝、字拷贝(寄存器的理解)
    模板方法模式实现组合查询
    关于方程x^2+y^2=p (p为素数)的解问题
    IOS登陆+注册+抽奖+排行榜
    用PersonalRank实现基于图的推荐算法
    Redis3.0--集群安装部署
  • 原文地址:https://www.cnblogs.com/struggle-1216/p/11729492.html
Copyright © 2011-2022 走看看