SCP
Table of Contents
1. 简介
scp 是 secure copy 的缩写,相当于 cp + SSH。它的底层是 SSH 协议,默认端口是 22,相当于先使用 ssh 命令登录远程主机,然后再执行拷贝操作。
scp 主要用于以下三种复制操作:
- 本地复制到远程。
- 远程复制到本地。
- 两个远程系统之间的复制。
使用 scp 传输数据时,文件和密码都是加密的,不会泄漏敏感信息。
2. 基本语法
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>
将 source1
和 source2
两个文件,复制到 </destination/dir>
路径下。
如果被复制的文件,在目标位置已有同名文件,scp 会在没有警告的情况下覆盖同名文件。
3. 用法示例
3.1. 本地文件复制到远程
复制本机文件到远程系统: 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>
文件夹下。不创建新的目录。
3.2. 远程文件复制到本地
从远程主机复制文件到本地: 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>
文件夹下。不创建新的目录。
3.3. 两个远程系统之间的复制
本机发出指令,从远程主机 host1
拷贝到远程主机 host2
: scp <host1_user_name>@<host1>:</path/to/source> <host2_user_name>@<host2>:</path/to/target>
系统提示输入两个帐户的密码。数据直接从 host1
传到 host2
不经过执行 scp 命令的机器 ( 本机 )。
4. 常用配置项
-c
指定文件拷贝数据传输的加密算法。比如scp -c blowfish ...
指定加密算法为 blowfish。-C
是否在传输时压缩文件。-F
指定 ssh_config 文件scp -F </path/to/ssh_config> ...
。-i
指定密钥scp -i private_key.pem ..
。-l
限制传输数据的带宽速率,单位是Kbit/sec
。scp -l 80 ...
带宽限制为 80Kb/s,即 10KB/s。-p
保留修改时间 modification time 、访问时间 access time 、文件状态 mode 等原始的文件信息-P
指定远程主机的 SSH 端口。如果远程主机使用默认端口 22,可以不用指定,否则需要用-P
参数在命令中指定。-q
关闭显示拷贝的进度条。-r
以递归方式复制目录。-v
显示详细的输出。