博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
运维自动化(一)-轻量级工具
阅读量:7114 次
发布时间:2019-06-28

本文共 5910 字,大约阅读时间需要 19 分钟。

scp

scp命令用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且scp传输是加密的。可能会稍微影响一下速度。另外,scp还非常不占资源,不会提高多少系统负荷,在这一点上,rsync就远远不及它了。虽然 rsync比scp会快一点,但当小文件众多的情况下,rsync会导致硬盘I/O非常高,而scp基本不影响系统正常使用。
选项-1:使用ssh协议版本1;-2:使用ssh协议版本2;-4:使用ipv4;-6:使用ipv6;-B:以批处理模式运行;-C:使用压缩;-F:指定ssh配置文件;-l:指定宽带限制;-o:指定使用的ssh选项;-P:指定远程主机的端口号;-p:保留文件的最后修改时间,最后访问时间和权限模式;-q:不显示复制进度;-r:以递归方式复制。scp在覆盖时不会提醒。
把当前目录下的authorized_keys 复制到远程主机192.168.4.101的root家目录下.ssh/#scp authorized_keys root@192.168.4.101:~/.ssh/把远程主机192.168.4.100 root家目录的.ssh/authorized_keys复制到当前目录#scp root@192.168.4.100:~/.ssh/authorized_keys .批量复制当前目录多个文件到远程主机#scp -B anaconda-ks.cfg install.log root@192.168.4.101:/tmp

rsync

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

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

rsync具有安全性高、备份迅速、支持增量备份等优点,通过rsync可以解决对实时性要求不高的数据备份需求,例如,定期地备份文件服务器数据到远端服务器,对本地磁盘定期进行数据镜像等。rsync的缺点逐渐被暴露了出来。rsync做数据同步时,需要扫描所有文件后进行对比,然后进行差量传输。如果文件很大,扫面文件是非常耗时的,而且发生变化的文件往往是很少一部分,因此rsync是非常低效的方式
Centos 6  version 3.0.6 .最小化安装自带Centos 7  version 3.0.9 .最小化安装不提供语法:• rsync –av /etc server1:/tmp 复制目录和目录下文件• rsync –av /etc/ server1:/tmp 只复制目录下文件选项:-e ssh|rsh 指定使用rsh、ssh方式进行数据同步-n 模拟复制过程-v 显示详细过程-r 递归复制目录树-p 保留权限-t 保留时间戳-g 保留组信息-o 保留所有者信息-l 将软链接文件本身进行复制(默认)-L 将软链接文件指向的文件复制-z, --compress 对备份的文件在传输时进行压缩处理。--exclude=PATTERN 指定排除不需要传输的文件模式。--include=PATTERN 指定不排除而需要传输的文件模式。--exclude-from=FILE 排除FILE中指定模式的文件。--include-from=FILE 不排除FILE指定模式匹配的文件--progress 显示传输过程-a 存档,相当于–rlptgoD,但不保留ACL(-A)和SELinux属性(-X)-aAX 最全的方式默认只会复制变化的数据

使用DD来模拟几个大文件

#dd if=/dev/zero of=file3 bs=1M count=500file1=100M file2=300M file3=500M对比下速度与时间#time scp file3 root@192.168.4.101:/tmpfile3                                                                                                                                                                          100%  500MB  18.5MB/s   00:27    real    0m27.906suser    0m1.418ssys     0m10.906s#time rsync --progress -e ssh file3 root@192.168.4.101:/tmpfile3   524288000 100%   50.51MB/s    0:00:09 (xfer#1, to-check=0/1)real    0m10.293suser    0m3.106ssys     0m12.211s-----------------------------------------------------------------------使用压缩选项后#time scp -C file3 root@192.168.4.101:/tmpfile3                                                                                                                                                                          100%  500MB  50.0MB/s   00:10    real    0m10.907suser    0m3.420ssys     0m9.929s#time rsync --progress -ze ssh file3 root@192.168.4.101:/tmpfile3   524288000 100%   62.24MB/s    0:00:08 (xfer#1, to-check=0/1)real    0m8.579suser    0m5.503ssys     0m2.043s

特别注意的地方

#rsync -av /tmp root@192.168.4.101:/tmp       注意源/tmp  会连同/tmp这个目录和/tmp目录下的文件一起复制#tree.└── tmp    ├── gconfd-gdm    ├── gconfd-root    ├── sshd#rsync -av /tmp/ root@192.168.4.101:/tmp        注意源/tmp/  只复制/tmp目录下的文件,相当于/tmp/*#tree.├── gconfd-gdm├── gconfd-root├── sshd

sftp

sftp命令是一款交互式的文件传输程序,命令的运行和使用方式与ftp命令相似,但是,sftp命令对传输的所有信息使用ssh加密,它还支持公钥认证和压缩等功能。

sftp [user@]host常用选项-B:指定传输文件时缓冲区的大小;-l:使用ssh协议版本1;-b:指定批处理文件;-C:使用压缩;-o:指定ssh选项;-F:指定ssh配置文件;-R:指定一次可以容忍多少请求数;-v:升高日志等级。在命令前加上!,表示查看本地目录指令,如!pwd ,!ls
#sftp root@192.168.4.101

pssh

项目网址:

pssh是python写的可以并发在多台机器上批量执行命令的工具,它的用法可以媲美ansible的一些简单用法,执行起来速度比ansible快。它支持文件并行复制,远程命令执行,杀掉远程主机上的进程等等。

在使用pssh之前,必须要保证管理主机和本地主机基于密钥的认证。如果不是基于密钥认证,必须保证被管理的多台主机的密码相同。

安装源在EPEL此组件包含了以下几个工具pnuke   在远程多台主机上并行killall某一进程prsync  使用rsync协议本地文件同步到远程多台主机上pscp.pssh  把文件并行复制到多台远程主机上pslurp  把文件从远程多台主机上复制到本地主机上pssh    在远程多台主机上并行运行命令pssh语法:pssh [OPTIONS] command [...]--version:查看版本-h:主机文件列表,内容格式” [user@]host[:port]”-H:主机字符串,内容格式” [user@]host[:port]”-l:登录使用的用户名-p:并发的线程数【 可选】-o:输出的文件目录【 可选】-e:错误输入文件【 可选】-t:TIMEOUT 超时时间设置,0无限制【 可选】-O:SSH的选项-v:详细模式-A:手动输入密码模式。当不支持ssh的key认证时-x:额外的命令行参数使用空白符号,引号,反斜线处理-X:额外的命令行参数,单个参数模式,同-x-i:每个服务器内部处理信息输出.就是指令执行在本机输出效果是一样的-P:打印出服务器返回信息pscp.pssh语法-v 显示复制过程-a 复制过程中保留常规属性-r 递归复制目录pslurp语法pslurp [OPTIONS] remote local-r 递归复制目录-L 后接本机目录会在指琮-L目录生成对应主机的汇夹,最好不要有同名的文件占用文件夹的创建,会报错pnuke语法pnuke [OPTIONS] pattern

搭配实例演示

#cat ip.txt 192.168.4.101   #这一台是Centos 7192.168.4.113   #这一台是Centos 6

返回某条指令的结果

#pssh -h ip.txt -i getenforce[1] 11:05:06 [SUCCESS] 192.168.4.101Disabled[2] 11:05:07 [SUCCESS] 192.168.4.113Enforcing#pssh -h ip.txt -P getenforce192.168.4.101: Disabled[1] 11:05:11 [SUCCESS] 192.168.4.101192.168.4.113: Enforcing[2] 11:05:11 [SUCCESS] 192.168.4.113支持命令中使用通配符等特殊符号,但是注意使用单引号#pssh -h ip.txt -P 'lscpu|grep "Model name:"'192.168.4.101: Model name:            Intel(R) Core(TM) i5-5200U CPU @ 2.20GHz[1] 11:20:58 [SUCCESS] 192.168.4.101192.168.4.113: Model name:            Intel(R) Core(TM) i5-5200U CPU @ 2.20GHz[2] 11:20:58 [SUCCESS] 192.168.4.113#pssh -h ip.txt -P 'echo $HOSTNAME'

把信息输出到文件

#pssh -h ip.txt -o /app 'df -h|grep /dev/sd'[1] 11:31:28 [SUCCESS] 192.168.4.101[2] 11:31:29 [SUCCESS] 192.168.4.113#ls192.168.4.101  192.168.4.113#cat 192*/dev/sda3       8.6G  1.6G  7.0G  19% //dev/sda1       497M  113M  385M  23% /boot/dev/sda3       8.3G  1.8G  6.1G  23% //dev/sda1       477M   35M  417M   8% /boot

从本机同步单个文件或多个文件到远程主机

#pscp.pssh -h ip.txt /etc/selinux/config /etc/selinux/[1] 11:45:05 [SUCCESS] 192.168.4.101[2] 11:45:05 [SUCCESS] 192.168.4.113ESS] 192.168.4.113#pssh -h ip.txt -P 'setenforce 0;grep ^SELINUX= /etc/selinux/config'192.168.4.101: SELINUX=disabled[1] 11:47:36 [SUCCESS] 192.168.4.101192.168.4.113: SELINUX=disabled[2] 11:47:37 [SUCCESS] 192.168.4.113

从远程主机同步单个文件或多个文件到本机

复制目录时才指定-r 。最拍一个local参数是必须指定的。复制文件时,指的是文件名,复制目录时,指的是相对于-L XXX 下的子目录#pslurp -h ip.txt -r -L /app /var/log/ log#tree -L 3.├── 192.168.4.101│ └── log│     ├── audit│     ├── boot.log│    ├── 192.168.4.113│ └── log│     ├── anaconda.log│     ├── audit│     ├── boot.log

结束远程主机指定进程

查看远程主机确实打开了ssh-agent进程#pssh -h ip.txt -i 'pidof ssh-agent'[1] 15:30:08 [SUCCESS] 192.168.4.1014093 4083 4073[2] 15:30:08 [SUCCESS] 192.168.4.1136487 6474 6461#pnuke -h ip.txt ssh-agent[1] 15:28:54 [SUCCESS] 192.168.4.101[2] 15:28:55 [SUCCESS] 192.168.4.113

转载于:https://blog.51cto.com/191226139/2061612

你可能感兴趣的文章
微信小程序登录 .net 后端实现
查看>>
c++中巧用函数对象传递附加信息
查看>>
【HDOJ】1325 Is It A Tree?
查看>>
vue使用qrcode插件生成二维码
查看>>
swig模板 html代码自然状态下输出是转义的,必须加一个函数来转换为html代码;...
查看>>
课上练习
查看>>
android studio 中获取sha1
查看>>
兼容主流浏览器的CSS透明代码
查看>>
sql
查看>>
GO语言的进阶之路-网络安全之proxy
查看>>
人是怎么废掉的?
查看>>
vim编辑器使用
查看>>
高精度算法集合
查看>>
MyEclipse中消除frame引起的“the file XXX can not be found.Please check the location and try again.”的错误...
查看>>
Mysql InnoDB三大特性-- change buffer
查看>>
TCP、UDP、RTP(RTCP)异同与区别
查看>>
Linux的文件最大连接数
查看>>
文章标题
查看>>
JAVA线程
查看>>
用for和while循环求e的值[e=1+1/1!+1/2!+1/3!+1/4!+1/5!+...+1/n!]
查看>>