Linux常用命令-scp

命令

scp

描述

secure copy (remote file copy program)
远程复制文件

用法

1
2
3
scp [-12346BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file]
[-l limit] [-o ssh_option] [-P port] [-S program]
[[user@]host1:]file1 ... [[user@]host2:]file2

选项

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Options:
-1 使用v1版本
-2 使用v2版本
-3 两台远程主机之间的复制通过本地主机中转。如果没有此选项,数据将直接在两台远程主机之间复制。此选项将不显示进度表
-4 使用IPv4
-6 使用IPv6
-C 启用压缩
-F 指定用户ssh_config配置文件
-i 指定私钥文件
-l 限制带宽,单位Kbit/s
-o 指定ssh选项,用于临时覆盖配置文件中的选项,详情参考man ssh_config
-P 指定端口
-p 保留原始文件的时间和权限属性
-q 静默模式
-r 递归复制目录,注意scp默认会解析符号链接,即同步复制符号链接下的文件,而非链接本身
-v 显示详情

注意

注意文件的权限,如果目标用户不具备目标目标的权限,将复制失败.建议先临时复制到家目录或/tmp目录

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 复制本地文件到远程主机的www用户家目录下,显示的内容分别为文件名,进度,文件大小,传输速度,用时
$ scp a.tar.gz www@192.168.31.12:~/
a.tar.gz 100% 202 49.2KB/s 00:00
# 复制文件并改名
$ scp a.tar.gz www@192.168.31.12:/data/www/b.tar.gz
# www用户没有/opt目录的权限,所以复制失败,提示Permission denied
$ scp a.tar.gz www@192.168.31.12:/opt/b.tar.gz
# 直接在两台远程主机之间复制文件,注意需要提前配置好密钥认证,否则会提示输入密码
$ scp www@192.168.31.11:~/a.tar.gz www@192.168.31.12:~/
# -3 通过本机中转文件,适用于两台远程主机不能直接通信或无法相互认证的情况
$ scp -3 www@192.168.31.11:~/a.tar.gz www@192.168.31.12:~/
# -i 指定密钥
$ scp -i .ssh/key a.tar.gz www@192.168.31.12:~/
# -l 限速,单位Kbit/s, 10000/8=1250,相当于1.25MB/s的传输速度, 5000相当于625KB/s
$ scp -l 10000 a.tar.gz www@192.168.31.12:~/
a.tar.gz 100% 10MB 1.2MB/s 00:08
$ scp -l 5000 a.tar.gz www@192.168.31.12:~/
a.tar.gz 100% 10MB 629.6KB/s 00:16
# -p 保留源文件的时间戳和权限
$ scp -p a.tar.gz www@192.168.31.12:~/
# -r 递归复制目录,如果目录中有链接文件,建议将其打包后再复制,否则会重复复制文件
$ scp -r dir/ www@192.168.31.12:~/