scp ( secure copy ) 用于使用 SSH 两个位置之间(本地与服务器之间)安全地复制文件和目录、传输文件和目录。

Linux scp 命令主要用于在本地与服务器之间在命令行中使用 SSH 传输文件和目录。

scp 的定义解释

在 Linux 或 FreeBSD 系统中,scp 主要用于使用命令行在本地与服务器之间传输文件,scp 命令基于 SSH(Secure Shell)协议,确保数据传输的安全性。

scp 命令简易语法

scp [参数] [[user@]host1:]file1 [[user@]host2:]file2
  • [[user@]host1:]file1:用于指定源文件,user 为系统用户,host1 为源 IP 地址,file1 为文件或目录,可以是相对地址或绝对地址。
  • [[user@]host2:]file2:用于指定源文件,user 为系统用户,host2 为目标 IP 地址,file2 为文件或目录,可以是相对地址或绝对地址。

一般情况下使用简易语法足够,可以查看下面的使用示例。

scp 简易语法使用示例

复制文件到服务器

把本地文件复制到服务器 10.10.0.1/home/user1 目录,使用用户 user1

scp sample.txt user1@10.10.0.1:/home/user1

复制文件到本地

把本地文件复制到服务器 10.10.0.1/home/user1 目录,使用用户 user1

scp user1@10.10.0.1:/home/user1/sample.txt ./

复制目录到服务器

把本地目录复制到服务器 10.10.0.1/home/user2 目录,使用用户 user2,需要使用 -r 参数:

scp -r /home/user1/mydic user2@10.10.0.1:/home/user2

复制目录到本地

把本地目录复制到服务器 10.10.0.1/home/user1 目录,使用用户 user1,需要使用 -r 参数:

scp -r user1@10.10.0.1:/home/user1/mydic /home/user2/

scp 命令详细语法

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

scp 命令参数的解释请看下面的详细内容。

scp 命令使用示例

指定服务器 SSH 端口号

如果远程服务器的 SSH 服务运行在非默认端口(21,22),可以使用 -P 选项指定 SSH 端口号:

scp -P 2233 sample.txt user1@10.10.0.1:/home/user1/

保留文件属性

如果要保留复制文件的修改时间、访问时间和权限等属性,可以使用 -p 选项:

scp -p sample.txt user1@10.10.0.1:/home/user1/

启用压缩

对于大文件或者文件数量很多时,可以使用 -C 选项,启用压缩功能,加快传输速度:

scp -C sample.txt user1@10.10.0.1:/home/user1/

scp 命令中可用参数的解释

scp 命令常用参数解释

如下给出了 Linux scp 命令中常用参数的解释说明:

参数 解释说明
-P port 指定远程主机 SSH 端口号
-p 保留文件修改和访问时间等属性
-q 不显示进度表和非错误信息
-C 在数据发送到目标机器时压缩数据
-r 递归复制整个目录的内容

scp 命令其他参数解释

如下给出了 Linux scp 命令中其他参数的解释说明:

参数 解释说明
-c cipher 指定用于加密传输数据的密码,直接传递给 ssh
-i dentity_file 指定用于读取 RSA 身份验证(密钥)的文件,直接传递给 ssh
-l limit 限制使用的带宽,单位为Kbit/s
-v 输出详细信息,在进行调试连接、验证和配置问题时,非常有用
-B 批量传输模式,避免重复询问口令
-q 禁用进度表
- f ssh_config 为 ssh 指定另一个用户配置文件,直接传递给 ssh
-S program 指定加密连接的程序名
-o ssh_option 使用 ssh_config 中指定的格式向 ssh 传递选项,这对于没有指定独立 scp 命令行标志的选项时非常有用
-1 强制 scp 使用协议1
-2 强制 scp 使用协议2
-4 强制 scp 只使用IPv4地址
-6 强制 scp 只使用IPv6地址

结语

在本教程中我们介绍了如何使用 scp ( secure copy ) 命令使用 SSH 在两个位置之间(本地与服务器之间)安全地复制文件和目录、传输文件和目录。scp 命令基于 SSH(Secure Shell)协议,确保数据传输的安全性。

该 scp 命令可以在 Linux 系统中使用,也可以在 FreeBSD 系统中使用。