scp命令

​scp​​​命令用于​​Linux​​​之间复制文件和目录,​​scp​​​是​​secure copy​​​的缩写,是​​Linux​​​系统下基于​​ssh​​​登陆进行安全的远程文件拷贝命令,使用​​scp​​​可以实现从本地系统到远程系统、从远程系统到本地系统、在本地系统的两个远程系统之间的复制传输。​​scp​​​是加密的,​​rcp​​​是不加密的,可以认为​​scp​​​是​​rcp​​的加强版。

语法

scp [OPTION] [user@]SRC_HOST:]file1 [user@]DEST_HOST:]file2

参数

  • ​-1​​​: 强制​​scp​​​使用协议​​1​​,这是一个较旧的协议。
  • ​-2​​​: 强制​​scp​​​使用协议​​2​​,这是一个较旧的协议。
  • ​-3​​: 两个远程主机之间的副本通过本地主机传输,如果没有此选项,数据将直接在两个远程主机之间复制,此选项还禁用进度表。
  • ​-4​​​: 强制​​scp​​​仅使用​​IPv4​​地址。
  • ​-6​​​: 强制​​scp​​​仅使用​​IPv6​​地址。
  • ​-B​​​: 使用批处理模式,无需任何交互式键盘输入即可运行,这意味着​​scp​​无法通过要求用户输入密码来验证会话,此时需要使用密钥进行身份验证。
  • ​-C​​​: 启用压缩,该压缩将​​-C​​​标志传递给​​ssh​​以启用加密连接的压缩。
  • ​-c cipher​​​: 选择用于加密数据传输的密码,此选项直接传递给​​ssh​​。
  • ​-F ssh_config​​​: 为​​ssh​​​指定每个用户的备用配置文件,此选项直接传递给​​ssh​​。
  • ​-i identity_file​​​: 选择读取​​RSA​​​身份验证的身份(私钥)的文件,这个选项直接传递给​​ssh​​。
  • ​-l limit​​​: 限制使用的带宽,以​​Kbit/s​​为单位。
  • ​-o ssh_option ​​​: 可用于以​​ssh_config​​​中使用的格式将选项传递给​​ssh​​​,例如​​AddressFamily​​​、​​BatchMode​​​、​​BindAddress​​​等等,这对于指定没有单独的​​scp​​命令标志的选项非常有用。
  • ​-P port​​​:指定远程主机上要连接到的端口,注意这个选项是用大写字母​​P​​​写的,因为​​-p​​​已经被保留了,用于保存​​rcp​​中文件的时间和模式。
  • ​-p​​: 保留原始文件的修改时间、访问时间和模式。
  • ​-q​​: 禁用进度表。
  • ​-r​​: 递归地复制整个目录。
  • ​-S program​​​: 用于加密连接的程序名称,程序必须能够解析​​ssh​​选项。
  • ​-v​​​: 详细模式,使​​scp​​​和​​ssh​​打印有关其进度的调试消息,这有助于调试连接,身份验证和配置问题。

示例

将​​file.txt​​传输到远程主机。

scp file.txt root@1.1.1.1:/tmp
# file.txt 100% 0 0.0KB/s 00:00

使用私钥将​​file.txt​​传输到远程主机。

scp -i ./v file.txt root@1.1.1.1:/tmp
# file.txt 100% 0 0.0KB/s 00:00

将远程目录中​​file.txt​​文件传输到本地,使用私钥验证身份。

scp -i ./v root@1.1.1.1:/tmp/file.txt ./
# file.txt 100% 0 0.0KB/s 00:00

每日一题

https://github.com/WindrunnerMax/EveryDay

参考

https://www.computerhope.com/unix/scp.htm
https://www.runoob.com/linux/linux-comm-scp.html
https://linuxize.com/post/how-to-use-scp-command-to-securely-transfer-files/