scp 是 secure copy 的缩写,相当于 cp + SSH。它的底层是 SSH 协议,默认端口是 22,相当于先使用 ssh 命令登录远程主机,然后再执行拷贝操作。
scp 主要用于以下三种复制操作:
使用 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>
将 source1 和 source2 两个文件,复制到 </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 命令的机器 (本机)。
scp -c blowfish ...
指定加密算法为 blowfish。scp -F </path/to/ssh_config> ...
。scp -i private_key.pem ..
。scp -l 80 ...
带宽限制为 80Kb/s,即 10KB/s。