linux中scp命令使用技巧详解(传输速度)

scp 命令
 
scp 可以在 2个 linux 主机间复制文件;

命令基本格式:
       scp [可选参数] file_source file_target

======
从 本地 复制到 远程
======
* 复制文件:
        * 命令格式:
                scp local_file remote_username@remote_ip:remote_folder
                或者
                scp local_file remote_username@remote_ip:remote_file
                或者
                scp local_file remote_ip:remote_folder
                或者
                scp local_file remote_ip:remote_file

                第1,2个指定了用户名,命令执行后需要再输入密码,第1个仅指定了远程的目录,文件名字不变,第2个指定了文件名;
                第3,4个没有指定用户名,命令执行后需要输入用户名和密码,第3个仅指定了远程的目录,文件名字不变,第4个指定了文件名;
        * 例子:
                scp /home/space/music/1.mp3 root@www.cumt.edu.cn:/home/root/others/music
                scp /home/space/music/1.mp3 root@www.cumt.edu.cn:/home/root/others/music/001.mp3
                scp /home/space/music/1.mp3 www.cumt.edu.cn:/home/root/others/music
                scp /home/space/music/1.mp3 www.cumt.edu.cn:/home/root/others/music/001.mp3

* 复制目录:
        * 命令格式:
                scp -r local_folder remote_username@remote_ip:remote_folder
                或者
                scp -r local_folder remote_ip:remote_folder

                第1个指定了用户名,命令执行后需要再输入密码;
                第2个没有指定用户名,命令执行后需要输入用户名和密码;
        * 例子:
                scp -r /home/space/music/ root@www.cumt.edu.cn:/home/root/others/
                scp -r /home/space/music/ www.cumt.edu.cn:/home/root/others/

                上面 命令 将 本地 music 目录 复制 到 远程 others 目录下,即复制后有 远程 有 ../others/music/ 目录

======
从 远程 复制到 本地
======
从 远程 复制到 本地,只要将 从 本地 复制到 远程 的命令 的 后2个参数 调换顺序 即可;

例如:
        scp root@www.cumt.edu.cn:/home/root/others/music /home/space/music/1.mp3
        scp -r www.cumt.edu.cn:/home/root/others/ /home/space/music/

最简单的应用如下 :

scp 本地用户名 @IP 地址 : 文件名 1 远程用户名 @IP 地址 : 文件名 2

[ 本地用户名 @IP 地址 :] 可以不输入 , 可能需要输入远程用户名所对应的密码 .

可能有用的几个参数 :

-v 和大多数 linux 命令中的 -v 意思一样 , 用来显示进度 . 可以用来查看连接 , 认证 , 或是配置错误 .

-C 使能压缩选项 .

-P 选择端口 . 注意 -p 已经被 rcp 使用 .

-4 强行使用 IPV4 地址 .

-6 强行使用 IPV6 地址 .
 

注意两点:
1.如果远程服务器防火墙有特殊限制,scp便要走特殊端口,具体用什么端口视情况而定,命令格式如下:
#scp -p 4588 remote@www.abc.com:/usr/local/sin.sh /home/administrator
2.使用scp要注意所使用的用户是否具有可读取远程服务器相应文件的权限。

加速scp传输速度

结论
声明:这里给出的测试数据不具有一般性,仅供参考。测试与数据本身特性有很大关系,本文使用InnoDB的redo log作为测试数据。

* 改变ssh加密算法,可以让速度更快;通常,越弱的加密算法,速度越快

* 通常压缩会降低scp速度,但这与数据类型有很大关系,对压缩率非常高的数据启用压缩,可以加速

* 压缩级别对传输效率影响很小

* 用于完整性校验的不同MAC( message authentication code)算法,对性能约有10%-20%的影响。

所以,简单尝试如下,让你的SCP速度double一下:

scp -r -c arcfour128 ...
scp -r -c aes192-cbc ...
scp -r -c arcfour128 -o "MACs umac-64@openssh.com" ... 注:启用压缩使用参数: -o "Compression yes"

2. 测试数据:加密算法和压缩的影响
这里对比了12种ssh中实现的加密算法和是否使用压缩的传输效率,测试文件使用的是InnoDB的1GB*4的日志文件(注意:不同类型的文件测试结果会很不同),这里纵坐标单位为MB/s,数据分为压缩传输和不压缩传输两组:

原始数据:scp_speed.txt

可以看到,不同加密算法传输速度相差很大;使用了压缩之后,速度下降很多,也看到不同加密算法加密后区别并不大。

3. 关于是否启用压缩
* 压缩只有在网络传输速度非常慢,以致于压缩后节省的传输时间大于压缩本身的时间,这时才有效果,所以是否启用压缩,需要实际测试

* 压缩比很低的数据,不要再启用压缩(例如已经压缩过的数据、视频等)

* 通常建议,传输前先压缩,而不是使用ssh的压缩;建议使用pigz/lbizp2等并行压缩工具

* 数据中大量重复、空洞,这类适合压缩的数据,可以尝试压缩选项,例如如下是一组,大量"空洞"数据的测试:

看到,压缩大大提高了传输效率

4. "压缩级别"对传输速度影响不大
最后一组对比是,将压缩级别从1改到9,对比传输速度,纵坐标单位MB/s,对12种加密算法分别使用了测试9个压缩级别,数据如下:

大图链接 原始数据:scp-compression-level.txt

可以看到,压缩级别对传输影响较小。ssh使用的默认压缩级别是6。

5. 测试数据:完整性校验算法MACs选择
通过选项Macs可以设置对应的哈希算法,man ssh_config可以看到支持哪些哈希算法。这里对了比了12中加密算法下使用不用的完整性校验算法的性能情况:

看到,绝大数情况下"umac-64@openssh.com"(关于此哈希)性能都更好,所以建议尝试使用此哈希算法做验证,看看你的场景下速度是否与提升。也可以看到,默认的hmac-md5哈希在默认的加密aes128-ctr下表现比较好;

时间: 2024-09-20 00:34:46

linux中scp命令使用技巧详解(传输速度)的相关文章

linux中route命令的使用详解

route命令用于显示和操作IP路由表.要实现两个不同的子网之间的通信,需要一台连接两个网络的路由器,或者同时位于两个网络的网关来实现.在Linux系统中,设置路由通常是 为了解决以下问题:该Linux系统在一个局域网中,局域网中有一个网关,能够让机器访问Internet,那么就需要将这台机器的IP地址设置为 Linux机器的默认路由. 作用 route命令用于查看和配置linux内核路由表,也就是用来查看和配置linux的静态路由表. 描述 route命令操作基于linux内核路由表,它的主要

Linux中cron命令的用法详解

  linux中有一个命令可以定期来执行系统任务.这就是crond服务.下面介绍下crontab命令的用法. linux任务调度的工作主要分为以下两类: 编辑/etc/crontab 文件配置cron cron服务每分钟不仅要读一次 /var/spool/cron内的所有文件,还需要读一次/etc/crontab,因此我们配置这个文件也能运用cron服务做一些事情.用 crontab配置是针对某个用户的,而编辑/etc/crontab是针对系统的任务.此文件的文件格式是: 1.系统执行的工作:系

Linux 中RPM命令参数使用详解

  此工具包最先是由Red Hat公司推出的,后来被其他Linux开发商所借用.由于它为Linux使用者省去了很多时间,所以被广泛应用于在Linux下安装.删除软件.下面就给大家介绍一下它的具体使用方法. 1.我们得到一个新软件,在安装之前,一般都要先查看一下这个软件包里有什么内容,假设这个文件是:Linux-1.4-6.i368.rpm,我们可以用这条命令查看: rpm -qpi Linux-1.4-6.i368.rpm 系统将会列出这个软件包的详细资料,包括含有多少个文件.各文件名称.文件大

Linux中rpm命令参数使用详解

rpm 执行安装包 二进制包(Binary)以及源代码包(Source)两种.二进制包可以直接安装在计算机中,而源代码包将会由RPM自动编译.安装.源代码包经常以src.rpm作为后缀名. 还不清楚具体有啥用,只知道可以检查一个软件是否安装.比如: rpm -qa |grep rsync -i, --install                     install package(s) -v, --verbose                     provide more detai

linux中ln 命令使用参数详解

ln是linux中又一个非常重要命令,它的功能是为某一个文件在另外一个位置建立一个同不的链接,这个命令最常用的参数是-s,具体用法是:ln –s 源文件 目标文件. 当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上该文件,然后在 其它的目录下用ln命令链接(link)它就可以,不必重复的占用磁盘空间.例如:ln –s /bin/less /usr/local/bin/less -s 是代号(symbolic)的意思.

linux中mv命令的用法详解

1.作用 mv命令来为文件或目录改名或将文件由一个目录移入另一个目录中.该命令等同于DOS系统下的ren和move命令的组合.它的使用权限是所有用户. 2.格式 mv [options] 源文件或目录 目标文件或目录 3.[options]主要参数 -i:交互方式操作.如果mv操作将导致对已存在的目标文件的覆盖,此时系统询问是否重写,要求用户回答"y"或"n",这样可以避免误覆盖文件. -f:禁止交互操作.mv操作要覆盖某个已有的目标文件时不给任何指示,指定此参数后

linux中diff命令的使用详解

diff命令是版本管理工具的基础,本文主要讲解diff比较几种方式和git diff使用技巧.如下两个文件,file1和file2 $ cat file1aaaaaaaaaa$ cat file2aaaabbaaaa 1.普通格式diff file1 file2$ diff file1 file23c3< aa---> bb 说明:3c3表示file1的第3行有变化(change),变动为file2的第3行;<表示从file1当中去除该行;---分割file1和file2;>表示f

linux中scp命令和scp命令用法大全_linux shell

scp就是secure copy,是用来进行远程文件拷贝的.数据传输使用ssh1,并且和ssh1使用相同的认证方式,提供相同的安全保证.与rcp不同的是,scp会要求你输入密码如果需要的话. svn 删除所有的 .svn文件 find . -name .svn -type d -exec rm -fr {} \; linux之cp/scp命令+scp命令详解   名称:cp 使用权限:所有使用者 使用方式: cp [options] source dest cp [options] source

linux中scp命令实现远程上传下载文件/文件夹

命令:scp 不同的Linux之间copy文件常用有3种方法: 第一种就是ftp,也就是其中一台Linux安装ftp Server,这样可以另外一台使用ftp的client程序来进行文件的copy. 第二种方法就是采用samba服务,类似Windows文件copy 的方式来操作,比较简洁方便. 第三种就是利用scp命令来进行文件复制.     scp是有Security的文件copy,基于ssh登录.操作起来比较方便,比如要把当前一个文件copy到远程另外一台主机上,可以如下命令. scp /h