linux-tutorial/docs/linux/cli/scp.md
Zhang Peng 18d2a58725 update
2020-03-10 22:54:15 +08:00

84 lines
2.9 KiB
Markdown
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# scp
加密的方式在本地主机和远程主机之间复制文件
## 补充说明
**scp 命令** 用于在 Linux 下进行远程拷贝文件的命令,和它类似的命令有 cp不过 cp 只是在本机进行拷贝不能跨服务器,而且 scp 传输是加密的。可能会稍微影响一下速度。当你服务器硬盘变为只读 read only system 时,用 scp 可以帮你把文件移出来。另外scp 还非常不占资源不会提高多少系统负荷在这一点上rsync 就远远不及它了。虽然  rsync 比 scp 会快一点但当小文件众多的情况下rsync 会导致硬盘 I/O 非常高,而 scp 基本不影响系统正常使用。
### 语法
```shell
scp(选项)(参数)
```
### 选项
```shell
-1使用ssh协议版本1
-2使用ssh协议版本2
-4使用ipv4
-6使用ipv6
-B以批处理模式运行
-C使用压缩
-F指定ssh配置文件
-iidentity_file 从指定文件中读取传输时使用的密钥文件例如亚马逊云pem此参数直接传递给ssh
-l指定宽带限制
-o指定使用的ssh选项
-P指定远程主机的端口号
-p保留文件的最后修改时间最后访问时间和权限模式
-q不显示复制进度
-r以递归方式复制。
```
### 参数
- 源文件:指定要复制的源文件。
- 目标文件:目标文件。格式为`user@hostfilename`(文件名为目标文件的名称)。
### 实例
从远程复制到本地的 scp 命令与上面的命令雷同,只要将从本地复制到远程的命令后面 2 个参数互换顺序就行了。
**从远处复制文件到本地目录**
```shell
scp root@10.10.10.10:/opt/soft/nginx-0.5.38.tar.gz /opt/soft/
```
从 10.10.10.10 机器上的`/opt/soft/`的目录中下载 nginx-0.5.38.tar.gz  文件到本地`/opt/soft/`目录中。
**从亚马逊云复制 OpenVPN 到本地目录**
```shell
scp -i amazon.pem ubuntu@10.10.10.10:/usr/local/openvpn_as/etc/exe/openvpn-connect-2.1.3.110.dmg openvpn-connect-2.1.3.110.dmg
```
从 10.10.10.10 机器上下载 openvpn 安装文件到本地当前目录来。
**从远处复制到本地**
```shell
scp -r root@10.10.10.10:/opt/soft/mongodb /opt/soft/
```
从 10.10.10.10 机器上的`/opt/soft/`中下载 mongodb 目录到本地的`/opt/soft/`目录来。
**上传本地文件到远程机器指定目录**
```shell
scp /opt/soft/nginx-0.5.38.tar.gz root@10.10.10.10:/opt/soft/scptest
# 指定端口 2222
scp -rp -P 2222 /opt/soft/nginx-0.5.38.tar.gz root@10.10.10.10:/opt/soft/scptest
```
复制本地`/opt/soft/`目录下的文件 nginx-0.5.38.tar.gz 到远程机器 10.10.10.10 的`opt/soft/scptest`目录。
**上传本地目录到远程机器指定目录**
```shell
scp -r /opt/soft/mongodb root@10.10.10.10:/opt/soft/scptest
```
上传本地目录`/opt/soft/mongodb`到远程机器 10.10.10.10 上`/opt/soft/scptest`的目录中去。