Linux命令 第5节 拷贝命令家族-scp

跟我一起学嵌入式linux开发之常用命名:第5节 拷贝命令家族(cp、scp、rsync) --- scp

1. scp功能

scp 命令可以在 2个 linux 主机间复制文件; scp 即secure copy, scp是linux系统下基于ssh的远程文件拷贝命令,所以,使用scp命令之前要保证目标主机开启了ssh server。

2.命令格式

scp [参数] [源路径] [目标路径]

#远程主机路径格式为 username@host:filename

3.主要命令参数

-1:使用ssh协议版本1;-2:使用ssh协议版本2;-4:使用ipv4;-6:使用ipv6;-B:以批处理模式运行;-C:使用压缩;-F:指定ssh配置文件;-l:指定宽带限制;-o:指定使用的ssh选项;-P:指定远程主机的端口号;-p:保留文件的最后修改时间,最后访问时间和权限模式;-q:不显示复制进度;-r:以递归方式复制。4.使用场景

场景1:从本地复制到远程

命令:

如上所示,第一次建立ssh链接时会询问,输入yes即可。由于scp是基于ssh登陆进行安全的远程文件拷贝,所以,拷贝时需要指定远程主机的用户名称以及对应的密码,只有经过认证的用户才具有拷贝权利,并不是可以随便拷贝的。

场景2:从远程复制到本地

命令:

$rm zicreate.txtrm:remove regular file ‘zicreate.txt’? y$scp root@10.239.85.241:/tmp/zicreate.txt ./root@10.239.85.241's password:zicreate.txt 100% 640 0.6KB/s 00:00$ ls -l zicreate.txt-rw-r--r--. 1 root root 640 Dec 28 02:52 zicreate.txt

场景1与场景2的操作是一样的,唯一的区别仅在于 [源路径] [目标路径] 的定义不同而已。

场景3:复制文件夹

使用scp 进行文件夹复制时只需要加上 "-r" 参数即可,其他如通配符之类的组合操作可以参考cp命令。使用方式如下:

默认进行复制操作时会显示传输进度以及传输速率。

其他参数相关操作实际使用较少,不再详述。

扩展

与scp相似有一个同样功能的命令rcp。scp 是 rcp 的加强版,是security cp,而 rcp 是不加密的remote cp。所以,有了scp 基本上不需要 rcp 了,本系列文章不再讲解 rcp 的使用。

脑洞

在这里先剧透一个牛逼的命令 nc --- Netcat。

以下演示如何通过 nc 进行文件以及目录的远程传输。

在这个示例中,假设有两台电脑 A / B。A作为服务器(ip=10.239.85.234),B为客户端(ip=10.239.85.241)。

1. 文件传输

Server

$ nc -l 1234 < zicreate.txt

Client

$ nc -n 10.239.85.234 1234 > recv.txt

在这里我们创建了一个socke服务在A的1234端口上,并且重定向 netcat 的输入为文件 zicreate.txt,那么当任何 client 成功连接到 server 该端口时,netcat 会发送文件 zicreate.txt 的内容到 client。

在 client 我们将接收到的数据重定向输出到 recv.txt,当 Client 连接到 server , server 发送文件内容, Client 保存文件内容.

当然,server 端也可以接收文件,方法如下:

同样是 A 作为Server,

Server

$ nc -l 1234 > recv.txt

Client

$ nc -n 10.239.85.234 1234 < recv.txt

2. 目录传输

发送一个文件很简单,但是如果我们想要发送多个文件,或者整个目录,一样很简单,只需要使用压缩工具tar,压缩后发送压缩包。

具体命令如下:

Server

$ tar -cvf – ./dir1 nc -l 1234

Client

$ nc -n 10.239.85.234 1234 tar -xvf -

在server 上,我们创建一个tar归档包并且通过"-"在控制台重定向它,然后使用管道重定向给netcat,netcat可以通过网络发送它。

在client 我们下载该压缩包,然后通过管道接收归档包并解压为文件夹。

如果想要节省带宽传输压缩包,我们可以使用bzip2或者其他工具压缩。

关于netcat 更多高级操作此处不在展开,留待以后讲解。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180109G06A1S00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券