这是我参与11月更文挑战的第14天,活动详情查看:2021最后一次更文挑战
命令简介
scp
是 secure copy 的简写,用于在 Linux 下进行远程拷贝文件的命令。scp
采用 OpenSSH 的认证方法,利用 ssh 实现数据的传输,因而具有同等的安全保障。当使用 scp
命令复制文件时,如果需要交互认证,远程系统首先会要求用户提供密码或密码短语。经过认证之后,文件复制才会开始。如果 OpenSSH 设置了无密码的注册方式,可以省略交互认证过程。
同 scp
命令类似的命令有 cp
,不过 cp
只是在本机进行拷贝不能跨服务器,而且 scp
传输是加密的。可能会稍微影响一下速度。当你服务器硬盘变为只读 read only system 时,用 scp 可以帮你把文件移出来。另外,scp 还非常不占资源,不会提高多少系统负荷,在这一点上,rsync 就远远不及它了。虽然 rsync 比 scp 会快一点,但当小文件众多的情况下,rsync 会导致硬盘 I/O 非常高,而 scp 基本不影响系统正常使用。
注意,使用 scp
命令把源文件复制到目的文件时,scp
通常不会保护已存在的目的文件。如果目的文件已经存在,scp
会覆盖目的文件,代之以源文件的内容。如果目的文件不存在,scp
首先会使用指定的目的文件名创建一个空文件,然后再使用源文件的内容填充新建的空文件。
命令格式
scp [参数] [原路径] [目标路径]
命令参数
命令 | 解释 |
---|---|
-1 | 强制 scp 使用 OpenSSH 协议第 1 版。 |
-2 | 强制 scp 使用 OpenSSH 协议第 2 版。 |
-4 | 强制 scp 仅用 IPv4 地址。 |
-6 | 强制 scp 仅用 IPv6 地址。 |
-B | 采用批处理方式(禁止提示用户输入密码或密码短语)。 |
-C | 启用压缩方式(把 -C 选项传递给 ssh 命令,通过 ssh 命令实现压缩)。 |
-c cipher | 选择加密传输数据时使用的密码。这个选项指定的密码可以直接传递给 ssh。 |
-F ssh-conf | 指定基于用户的 ssh 配置文件,直接传递给 ssh 命令。 |
-i idfile | 指定一个密钥文件,以便能够使用其中的私钥与远程系统进行认证。这个选项指定的密钥文件可以直接传递给 ssh。 |
-l limit | 以 Kbps 为单位,指定传输速度,限制使用的带宽。 |
-o ssh-opts | 采用 ssh_config 配置文件的格式(如 -o Port=24 ),向 ssh 传递指定的选项。当 scp 命令没有单独的选项能够指定 ssh 选项时,-o 选项是非常有用的。完整的 ssh 选项详见 ssh_config 配置文件手册页的说明。 |
-P port | 指定连接远程主机的端口。 |
-p | 保持原始文件的最近修改时间、最近访问时间和模式字段等。 |
-q | 安静方式。禁止显示传输进度以及 ssh 给出的警告与诊断信息等。 |
-r | 递归地复制整个目录。注意,在递归复制文件期间,如果遇到符号链接文件,scp 将会采用符号链接文件引用的文件,或进入其引用的目录。 |
-S program | 指定处理加密连接的程序。指定的程序必须能够处理 ssh 选项。 |
-v | 显示 scp 命令(包括 ssh 命令)的处理过程与调试信息,有助于诊断连接、认证与配置等问题。 |
应用实例
- 从本地服务器复制到远程服务器:
1. scp local_file remote_username@remote_ip:remote_folder
2. scp local_file remote_username@remote_ip:remote_file
3. scp local_file remote_ip:remote_folder
4. scp local_file remote_ip:remote_file
第 1
,2
个指定了用户名,命令执行后需要输入用户密码,第 1
个仅指定了远程的目录,文件名字不变,第 2
个指定了文件名。
第 3
,4
个没有指定用户名,命令执行后需要输入用户名和密码,第 3
个仅指定了远程的目录,文件名字不变,第 4
个指定了文件名。
- 从远程服务器复制到本地服务器
从远程复制到本地的 scp 命令与上面的命令雷同,只要将从本地复制到远程的命令后面 2 个参数互换顺序就行了。
参考文档
- scp命令
- 《Linux 常用命令简明手册》—— 邢国庆编著