SCP 

Last Update: 2023-05-18

目录

简介

scp 是 secure copy 的缩写,相当于 cp + SSH。它的底层是 SSH 协议,默认端口是 22,相当于先使用 ssh 命令登录远程主机,然后再执行拷贝操作。

scp 主要用于以下三种复制操作:

  1. 本地复制到远程。
  2. 远程复制到本地。
  3. 两个远程系统之间的复制。

使用 scp 传输数据时,文件和密码都是加密的,不会泄漏敏感信息。

基本语法

scp 的语法类似 cp 的语法: scp <source> <destination>source 是文件当前的路径, destination 是目标位置。它们都可以包含用户名和主机名。

scp user@host:foo.txt bar.txt 将远程主机 host 上用户 user 家目录下的 foo.txt ,复制到本机当前目录的 bar.txt 。可以看到,主机与文件之间要使用冒号 : 分隔。

scp 会使用 SSH 客户端的配置文件 ~/.ssh/config ,如果配置文件里面定义了主机的别名,这里也可以使用别名连接。

scp 支持一次复制多个文件: scp <source1> <source2> </destination/dir>source1source2 两个文件,复制到 </destination/dir> 路径下。

如果被复制的文件,在目标位置已有同名文件,scp 会在没有警告的情况下覆盖同名文件。

用法示例

本地文件复制到远程

复制本机文件到远程系统: scp </path/to/local_file> <user_name>@<host>:</path/to/target_file>

将本机整个目录拷贝到远程主机: scp -r </path/to/local_dir> <user_name>@<host>:</path/to/remote_dir> 在远程主机 </path/to/remote_dir> 目录下创建一个新目录,名称与本机源目录相同,文件被拷贝到新目录下。

将本机目录下的所有内容拷贝到远程目录: scp -r </path/to/local_dir>/ <user_name>@<host>:</path/to/remote_dir> 源地址结尾有 / ,将本地 </path/to/local_dir> 路径下的文件拷贝到远程主机上的 </path/to/remote_dir> 文件夹下。不创建新的目录。

远程文件复制到本地

从远程主机复制文件到本地: scp <user_name>@<host>:</path/to/remote/file> </path/to/local_file> 或者 scp <user_name>@<host>:</path/to/remote/file> </path/to/local_dir>

拷贝一个远程目录到本机目录下: scp -r <user_name>@<host>:</path/to/remote_dir> </path/to/local_dir> 在本地 </path/to/local_dir> 目录下创建新目录,名称与远程主机源目录相同,文件被拷贝到新目录下。

拷贝远程目录下的所有内容,到本机目录下: scp -r <user_name>@<host>:</path/to/remote_dir>/ </path/to/local_dir> 源地址结尾有 / ,将远程主机 </path/to/remote_dir> 的内容拷贝到本地主机的 </path/to/local_dir> 文件夹下。不创建新的目录。

两个远程系统之间的复制

本机发出指令,从远程主机 host1 拷贝到远程主机 host2: scp <host1_user_name>@<host1>:</path/to/source> <host2_user_name>@<host2>:</path/to/target>

系统提示输入两个帐户的密码。数据直接从 host1 传到 host2 不经过执行 scp 命令的机器 (本机)。

常用配置项